runable
与thread 类类似
callable
future 模式: 并发模式的一种: 可以偶2种形式,无阻的和阻塞的形式,分别是isDone和get ,其中future 对象用来存放该线程的返回数值以及状态。
ExecuteSreviece e=new Excutors.newFixedThreadPool(3);
//submit 方法有多重的版本的,支持的callable 也能够只是runable 借口类型
future future=e.submit(new myCallable);
future.isDone
future.get();
:高级多线程控制类
java 1.5 提供了java,util.concurrent 提供了大量的高级公祖
1.ThreadLocal 类
用处: 保存线程的苏丽变量,对一个线程类(继承自thread 类)
当使用thread 类维护变量时,threadLocal 为每个使用该变量的线程提供苏丽的比爱你量副本,搜易每一个线程都独立的改变自己的副本,而不会影响其他线程诶定的副本,常用语用户登录空值,如纪录session,信息等。
实现: 每个Thread 类都以一个Thread类的Three啊LocalMap 的类型 变量(该类是一个清凉jie'bjie的iebMap,)。
map 是主要哦是get,set(T a) ,set 之后在Map中维护一个threaLocal->a .threadLoal 是一个特殊的容器。
2.原子类(aotmiInter,AtomicBoolean)
如果使用atomic warrpped class 如atomc intefer 或者使用记得保证院子的操作,则等同于synied.
//返回的数值为boolean
if(b.value.compareAndSet(old,value)){
return ;
} else{
3.lock 类
在java,util,concurrent 包内 有三个实现:
ReentrantLock
ReentrantReadWriteLock.ReadLock
ReentrantReadWriteLock.WriteLock
主要是和synchroied 一样,两者都是解决同步问题,处理资源诊断而长生的技术。功能类似的还有一些区别
区别如下:
lock 更灵活,可以自由的顶多枷锁解锁数序按照县家的后解开的数序的
提供多种枷锁方法,lock 阻塞时,trylock 无阻塞时 ,lockInterrupated 可打算的
本质上和监事锁和synchronied 是一样的。
4.容器类
这里就讨论比较常用的2个。
bloackQueue
Concuttent哈市Map
BlockingQueueu
阻塞队列。该类是Java.utilconcurrnet 包下的中药类,通过对Queueu的学习可以得知这个queueuq 是单向的。类在
对立的又不体哪家元素子啊对立诶为删除或取出元素。雷伊一个管道,特别适合于先进西拿出的策略。
普通的queue 借口哦主要是先有prirityQueue(优先队列),有兴趣的 可以研究下。
BlaclingQueueu
除了传统的queue 功能,还提亲了则色接口put 和take,带超时限制的offfer 和poll .put 会在队列慢的时候的堵塞,知道有空间被唤醒,take 在队列的空的时候,拿出来唤醒。
常见的阻塞的队列:
ArrayListBalockQueueu
LinkedListBlockingQueue
DelayQueue
synchronousQueue
concurrentHashMap
高效的线程安全哈市nao o
5.管理类
管理类的概念的比较,用于管理线程,本省不是多心啊的,但是听了一些机制来利用上述的工具做一些防撞l
了解的值得一提的管理类的;ThreadpoolExcutor 和JMX 框架的系统管理bean.
该内部类通过treadPool微信侧踢欧尼的实现的,掌握的有助于理解鲜橙汁的管理的本质上,本质上她们都是threaPoolExceotion 累的各种实现版本。
翻译一下5个参数:
corePoolSize; 池内的线城市出最小的数值,
maximnumPoolsize : 线程的最大数值,线程的增长是中欧不会超过高的是中欧。
keepalive Time:当池内县城说高于corePoolsize 时进过多上时间多余共享的才诶回收,
unit:时间单位;可以使ING用TimeUnitmilisendcons
workQueue: 带入任务的当代张所,该参数主要哦影响调度策略,如公平与否,是否长生额死。
threadFacTory: 线程工厂类,有默认实现,如果有自动以的需要则需要实习实心ThreadFactory并作为参数传入。
参考资料:
https://www.cnblogs.com/wxd0108/p/5479442.html