java并发编程(一):基本的线程机制
注:此系列的文章基本会参照java编程思想,外加自己的一些总结。
一.线程的状态
新建状态(New):Thread t = new MyThread(); 创建一个线程对象后进入此状态。
就绪状态(Runnable):t.start(); 调用了线程的start方法后进入此状态。
运行状态(Running):当cpu调度了处于就绪状态的线程后,线程进入此状态。
阻塞状态(Blocked):处于运行状态的线程,因为某种原因(如调用了t.wait(),t.join(),t.sleep方法,或者获取synchronized同步锁失败等)而放弃了对cpu的使用权后,线程进入此状态。
死亡状态(Dead):线程执行完毕或者因异常而退出run方法后,线程进入此状态。
二.基本使用
使用Thread类,Runnable接口,Callable接口等方式比较简单,不再总结。
使用Executor框架管理线程:
ExecutorService.submit(Runnable task);
ExecutorService.submit(Callable task);
返回一个FutureTask对象。
ExecutorService包含:1.FixedThreadPool 2.SingleThreadExecutor 3.CachedThreadPool 4.ScheduledThreadPoolExecutor’
三.线程控制
1.join()
2.sleep()
3.后台线程(Daemon thread)
4.线程优先级(setPriority())
5.yield()
四.线程安全
1.同步方法
2.同步代码块
3.Lock对象同步锁
4.wait(),notify(),notifyAll();
五.新类库中的构件
1.CountDownLatch
2.CyclicBarrier
3.Semaphore
4.Exchanger