
看图说明:

文字解释:线程a和线程b通信过程,首先线程a把本地内存的共享变量升级到主内存中,而后线程b去读取主内存的共享变量,最后升级到自己的本地内存中
Aqs源码部分他出名的儿子(继承了aqs)
1.ReentrantLock(类):大家都叫他重入锁,由于他可以重复加锁,不过synchronized也有这功能。
ReentrantLock源码部分2.ReentrantReadWriteLock(类):大家都叫他读写锁,他可以听时刻允许多线程进入,读写锁比排它锁(ReentrantLock)性能好,由于大多数情况读多于写。
ReentrantReadWriteLock源码部分
CountDownLatch源码部分
原理,即解决流程类图:如下
类图使用:
1.通过ThreadPoolExecutor创立线程池
构造器源码参数解释:
1.int corePoolSize :线程池基本大小
2.BlockingQueue :阻塞队列,用来保存等待执行的任务
3.int maximumPoolSize :线程池最大数量,他与阻塞队列关系是这样4.审的,假如队列满了,线程池没有满,线程池会根据线程数量创执行任务。
4.long keepAliveTime :空闲线程存或者时间
5.TimeUnit unit :线程活动保持时间的单位
提交
1.传递一个runnable(没有返回值),需要返回值使用submit()方法。
threadPoolExecutor.execute(new Runnable() { @Override public void run() { }});