http://ifeve.com/java-7-concurrency-cookbook/
1 线程工厂类的使用
2 ThreadGroup来管理一组线程
3 中断的处理
调用 interrupt 来设置线程中断状态
isInterrupted 来查询调用者线程中断状态,是否中断,使用子方法不会清楚已经设置的中断状态
interrupted 静态方法,查询当前线程的中断状态,调用后会清楚已经设置的中断状态
线程中断后抛出异常,则会中断状态会被清楚,如果想保留中断的状态,需要在catch异常时候,使用interrupt再次更改状态
4 线程的wait 和notify (这两个必须使用在锁块中否则报错)
5 统一未捕获异常处理
6 synchronized 使用
1)锁一个对象的一个方法(对象的方法,静态方法锁)
2)不同对象锁,锁不同的代码块(代码块锁)
7 Lock使用 ReadWriteLock lock = new ReentrantReadWriteLock( )公平锁和非公平锁
1)锁一个代码块,锁后一定要调用unlock否则会出现死锁。
2)可以实现,读写 锁分离:多个线程可以同时读,一旦有读锁就不能获得写锁,获得写锁就不能获得读锁
8 线程中一些同步关键字:semaphore,CountDownLatch ,callable,CyclicBarrier,Phaser,Exchange
9 线程池 :固定大小的线程池、缓存线程池、单一线程池,ScheduledThreadPoolExecutor。
线程可以提交后等待某个执行结果、等待所有的执行结果 、带有定时处理的线程池
执行callable方法的任务可以使用Future取消
10 ConcurrentLinkedDeque非阻塞队列 ,阻塞队列LinkedBlockingDeque,DelayedQueue,
11 原子变量 :AtomicLong ,避免指令重排导致的数据不一致行为。
12 Fork/Join框架使用。
13 自定义锁和自定义原子变量实现