![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
文章平均质量分 73
特殊人类鉴定完毕
一起进入代码的世界
展开
-
第五章:并发编程-任务执行
本章主要介绍Excutor框架。无限制创建线程的缺陷:1.线程生命周期的开销非常高。2.资源消耗。活跃的线程会消耗资源,尤其是内存。3.稳定性。Excutor框架串行执行任务的问题在于糟糕的响应性和吞吐量,而为每一个任务分配一个线程的问题在于资源管理的复杂性。线程池简化了线程的管理工作,并且java.util.concurrent提供了一种灵活的线程池实现作为Executor框架的一部分。publ...翻译 2018-04-22 15:55:46 · 151 阅读 · 0 评论 -
第六章:并发编程-取消与关闭
线程中断是一种协作机制,线程可以通过这种机制来通知另一个线程,告诉它在合适的或者可能的情况下停止当前工作,并转而执行其他的工作。每一个线程都有一个boolean类型的终端状态。当中断线程时,这个线程的终端状态将被设置为true。在Thread中包含了终端线程以及查询线程中断状态的方法。interrupt方法能中断目标线程。isInterrupted方法能返回目标线程的终端状态。静态的interru...翻译 2018-04-22 17:50:58 · 123 阅读 · 0 评论 -
第七章:并发编程-线程池的使用
线程饥饿死锁:在线程池中,如果任务依赖于其他任务,那么可能产生死锁。public class ThreadDeadlock { ExecutorService executorService = Executors.newSingleThreadExecutor(); public class RenderPageTask implements Callable<String&g...翻译 2018-04-22 19:59:58 · 110 阅读 · 0 评论 -
第一章:并发编程-线程安全性
本章主要介绍如何编写线程安全的代码1.线程安全要编写线程安全的代码,核心在于要对状态访问操作进行管理,特别是共享的或者是可变的状态的访问。当多个线程访问某个状态变量并且其中一个线程执行写入操作时,必须采用同步机制来协同这些线程对变量的访问。Java中的主要同步机制是关键字synchronized,它提供了一种独占的加锁方式,但同步这个术语还包括volatile类型的变量,显式锁以及原子变量。所谓的...翻译 2018-04-18 18:04:31 · 261 阅读 · 0 评论 -
第二章:并发编程-对象的共享
本章主要介绍内存可见性前面讲解了同步代码块和同步方法可以确保原子的方式执行操作,但是同步还有另一个重要的方面:内存可见性。我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且希望确保当一个线程修改了对象状态后,其他线程能看到发生的状态变化。1.可见性,volatile变量缺乏同步的程序中可能出现失效数据,非volatile类型的64位数值变量(double和long),JVM...翻译 2018-04-19 23:15:40 · 175 阅读 · 0 评论 -
第三章:并发编程-对象的组合
本章介绍如何设计线程安全的类设计线程安全的类在设计一个线程安全的类的过程中,需要包含以下三个基本要素:1.找出构成对象状态的所有变量2.找出约束状态变量的不变性条件3.建立对象状态的并发访问管理策略。基于java监视器模式的线程安全计数器public final class Counter { private long value = 0; public synchronized lo...翻译 2018-04-19 23:45:39 · 103 阅读 · 0 评论 -
第四章:并发编程-基础构建模块
主要介绍1.同步容器类2.并发容器3.阻塞队列 生产者-消费者模式4.阻塞方法与中断方法5.同步工具类1.同步容器类 同步容器类包括Vector和Hashtable,还有Collections.synchronizedXXX等工厂方法。这些类实现线程安全的方式是将它们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态。 同步容器类的问题: 同步容器类...翻译 2018-04-20 15:31:08 · 142 阅读 · 0 评论