多线程学习笔记
一、多线程的几种实现方式
1.1 继承Thread
public class StartThread extends Thread(){ @Override public void run(){ //重写run方法 } public static void main(String[] args){ Thread thread = new Thread(); //开启一个线程 thread.start(); } }
1.2 实现Runnable
public class StartThread implements Runnable{ @Override public void run(){ //重写run方法 } public static void main(String[] args){ StartThread st = new StartThread(); Thread thread = new Thread(st); //开启一个线程 thread.start(); } }
1.3实现Callable
public class StartThread implements Callable{ @Override //可以有返回值 //可以抛出异常 public void call() throw Exception{ //重写call方法 } public static void main(String[] args){ StartThread st = new StartThread(); //创建执行服务(线程池) ExecutorService service = Executors.newFixedThreadPool(3); //提交执行 Future result = service.submit(st); //获取结果 result.get(); //关闭服务 service.shutdownNow(); } }
二、线程状态
三、线程的几种操作
3.1 终止
由于原有的stop方法有线程安全问题,后续推荐的解决方案是,在目标线程加入控制代码,能够自主的控制线程的执行。
3.2 暂停 sleep
通过 Thread.sleep()方法阻塞线程,sleep时间到达后进入就绪状态
3.3 礼让 yield
Thread.yield()方法直接让线程进入就绪状态
3.4 插队 jion
直接简单粗暴的执行当前插队的线程,直至当前插队线程执行完为止,才会将资源让出。