第一:线程的基本操作
1.对线程的中断
Thread.interrupt()
2.等待线程的终止
Thread.join()
3.守护线程
setDaemon(true)
4.线程中不可控异常的处理
ExceptionHandler implements UncaughtExceptionHandler
5.使用ThreadLocal来实现线程的变量隔离,达到线程安全
6.线程组的使用(可以包含其他线程组,是个树形结构)
ThreadGroup
7.线程工厂类 ThreadFactory
第二:线程同步
1.基本synchronized
2.使用object对象进行同步
3.同步块中使用wait,notify,notifyAll方法
4.lock锁
lock
tryLock()
5.ReadWriteLock
6.lock.new Condition()
第三:线程同步辅助类
1.countdownlatch countdown() await()
2.Semaphore acquire() release()
3.CyclicBarrier await() isBroken()
4.Phaser 任务分阶段执行
5.Exchanger 线程到达同步点时候交换数据
第四:线程执行器
1.Executor FrameWork
执行器框架 Executors ThreadPoolExecutor
Executor ExecutorService JoinPoolExecutor
getPoolSize()
getActiveCount()
getCompletedTaskCount()
shutDownNow()
isTerminated()
awaitTermination()
2.Callable可以带返回结果
调用submit()方法,返回一个list,调用get方法
3.执行任意一个任务 executor.invokeAny()
executor.invokeAll()
4.定时任务
ScheduledTaskExecutor
5.需要返回结果的任务
可以取消,可以判断执行情况,可以定义rejectTaskHandler
第五:Fork/Join框架
Fork/Join 框架使用了工作窃取算法
ForkJoinPool RecursiveAction RecursiveTask
第六:并发集合
大致分为阻塞式和非阻塞式
非阻塞式列表:ConcurrentLinkedDeque
阻塞式列表:LinkedBlockingDeque
带有延迟DelayQueue到某个日期执行
ThreadLocalRandom生成并发随机数
使用原子变量类
Atomic系列
第七:定制并发类
1.继承ThreadPoolExecutor类,改写方法
2.runnable可以设置优先级,接口继承Comparable接口
3.ThreadFactory
4.可以在Executor里面使用ThreadFactory
ExecutorService executorService = Executors.newCachedThreadPool(threadFactory);
executorService.shutdown();
executorService.awaitTermination(1,TimeUnit.DAYS);
5.ScheduledThreadPoolExecutor中的任务都必须继承RunnableScheduledFuture接口
6.ForkJoinPool可以使用ThreadFactory作为参数
7.ForkJoinPool可以使用ForkJoinTask的子类作为参数
8.通过实现lock接口自定义锁
java的AbstractQueuedSynchronizer类作为java提供并发同步的核心类