并发
2017-04-04 20:16:20 0 举报
并发,又称同时执行,是指在同一时间段内,多个任务或进程同时进行计算或操作的现象。在计算机科学中,这通常涉及到多线程或多进程的调度和管理。并发技术可以提高系统的性能和响应速度,因为它允许多个任务共享处理器和其他硬件资源。然而,并发也带来了一些挑战,如数据竞争、死锁和资源管理等问题。因此,有效的并发控制和同步机制是实现高性能并发系统的关键。
作者其他创作
大纲/内容
thread
1.6以前:分段加锁。默认16个锁,分别保护不同范围,大大减少了竞争
HashTable
利用cas操作直接赋值
初始化扩容大小
DiscardOldestPolicy
是否偷取到?
树节点
设置状态为COMPLETING
判断keepAliveTime属性的值
判断节点类型
。。。。
初始化线程池
分拆列表
容量(初始为16)
是
是否获取到?
state:状态
FutureTask(Runable)
node
信号量
CallerRunsPolicy
线程id
runable
无界阻塞队列
构建FutureTask对象
插入树
初始化ConcurrentHashMao
SynchronousQueue
Work(Runable)
PriorityBlockingQueue
设置outcome为结果
扩展因子(默认为0.75)
设置线程池为SHUTDOWN状态
workQueue
Actor
其他状态
shutdown
Semaphore
并发容器类
判断状态
在各个方法上加锁,从而达到线程安全
返回FutrueTask
拷贝节点
线程a调用ft的run方法
ForkJoinWorkThread
New
抛出异常
是否分拆?
添加至任务队列
有界阻塞队列
分解红黑树
Node[]
结束
ThreadFactory
相对线程安全
上下文类加载器
判断是否需要扩展
锁住的原子操作
work
无界双端阻塞队列
run方法
new
提交线程池
调用任务的call方法
清空并返回任务队列
LinkedBlockingDueue
调用get方法
wq是否有界且已满?
所属的线程组
workQueues(WorkQueue[])
阻塞式获取
DiscardPolicy
运行状态
尝试中断所有线程
在多线程环境下不安全,需要外部同步措施
阻塞式列表
有超时的阻塞式获取
workQueue(LinkedBlockingQueue)
私有栈帧
CountDownLatch
遍历table
WorkStealingThreadPoolExecutor
唤醒
阻塞队列
LinkedBlockingQueue
红黑树
ThreadLocal
初始化Callable
从task[]顶部获取任务
对应位置是否为空?
栅栏
跳过
否
遍历等待队列,并唤醒
调用put方法
是否守护线程、线程优先级
双端阻塞队列
线程数是否达到最大
返回Future对象
如果树容量小于8,还原为列表
执行任务a0
空节点?
计算hash值,根据table长度截取一部分
AbortPolicy
中断处于等待从阻塞队列中获取任务的线程
ConcurrentHashMap
线程池
尝试从workQueue中获取任务
悄悄丢掉任务队列最上方的任务,然后接受此任务
线程初始化的内容
设置为fwd节点
FixedThreadPoolExecutor
转换为红黑树
默认size=16
callable:任务
执行完成
返回outcome
多线程
Completing
使程序等待其他程序运行至约定点
无界延迟队列
runner:运行者线程
调用submit方法
多线程环境下竞争激烈,性能极差
创建新的workQueue
HashMao
执行this.runable.run()
开始并发扩容
初始化table(Node[] )
执行任务A
1.8::利用automic包。利用大量cas操作实现同步,并使用少量锁机制作为补充
BlockingQueue
闭锁
Thread
返回结果
同步容器类
Normal
end
Thread类
线程名称
shutdownNow
run()
赋值
获取当前拒绝策略
将之放入workQueue
遍历列表,插在最后面
持有当前线程的句柄
悄悄丢掉
BlockingDueue
task[]
性能较好
使程序等待一些事件的发生
正常
fwd节点?
锁住的源自操作
线程权限
遍历a1到an
ArrayBlockingQueue
从其他workQueue的顶部获取任务
works(HashSet)
。。。
将an放入当前wq的task数组中
非线程安全容器
新建work对象
判断线程池状态
Fork/Join框架
同步队列,直接交付
休眠调用者线程
线程安全容器类
待处理任务列表
扩容
列表长度是否大于8?
设置为NEW
容器类
ScheduledThreadPoolExecutor
设置状态为Normal
将调用者线程加入等待队列
CachedThreadPoolExecutor
Exchange
waiters:等待线程队列
等待一会
DelayQueue
优先级无界阻塞队列
CyclicBarrier
转手给调用者线程执行
线程数是否达到最大?
outcome:执行结果
线程a开始执行此任务
两个线程到达约定点后交换信息
列表节点
0 条评论
下一页