
Java
tianyingang
感谢关注
展开
-
Java concurrency - Task Execution
所谓的“任务递交和任务执行解耦”就是说你可以轻易地通过实现自己的Executor接口改变某个任务的执行策略。Executor接口支持多种执行策略,将任务的递交和任务的执行解耦。:当当前的线程池大小超出处理任务所需数量时,销毁一些空闲线程,另一方面,当需求增加时,再创建新的线程,对线程数量没有限制。多个线程可以提升吞吐量,但线程数不能无限制地增长,因此要限制线程的数量。:单线程执行器,创建单个线程来处理任务,任务保证是序列化处理的。:固定大小的线程池,支持滞后的或者周期性的任务,类似于定时器。原创 2023-02-25 01:07:09 · 401 阅读 · 0 评论 -
Java concurrency - dead locks
如果一个任务在线程池中执行,同时它又依赖另一个任务,就可能会死锁。在一个单线程的执行器中,如果一个任务A把另一个任务B提交给同一个执行器并等待其结果,那么一定会造成死锁。第二个任务B干坐在任务队列中等待第一个任务A结束,但是第一个任务A永远不会结束,因为它在等待第二个任务B的计算结果。dead lock的常见形式。原创 2023-02-23 00:09:04 · 103 阅读 · 0 评论 -
Java concurrency-thread confinment
thread-local数据是线程安全的,因为只有一个线程可以访问这些数据,这就消除了竞争的风险。由于竞争不存在,因此不需要对数据进行加锁,因此thread confinement这个实践可以使得你的代码更加安全(从源头上大大降低了编码错误的隐患)且扩展性更好(无锁)。thread confiment 是一种实践,确保只有一个线程可以访问数据,这样的数据叫做thread-local数据,因为它是与某一特定的线程相关的。原创 2023-02-22 23:32:04 · 89 阅读 · 0 评论