java-并发多线程
leichenlei
这个作者很懒,什么都没留下…
展开
-
wait 和sleep 的区别
目录1,区别2,实验2.1,wait释放锁2.2,sleep不释放出锁1,区别wait 和sleep 的区别如下:1, wait 是 Object的方法,sleep是Thread的方法2,wait 必须在synchronized里使用,sleep不用。3,wait会释放锁,sleep不会。2,实验下面我们只研究上线的第3条:wait会释放...原创 2019-07-15 12:00:35 · 1138 阅读 · 0 评论 -
java多线程、同步
一、同步问题的发生对属性i进行i++操作不是同步的。i是类属性(方法内的i不在堆内存)它的动作分解为:1,从堆内存读取到当前线程栈内存,保存副本ii。2,ii+13,修改i为ii+1。试想两个线程同时执行i++,就是如果i=1,那么i可能为1,2,3。二、java的同步机制synchronized(同步):同步锁,进入它包裹代码块之前,需要获...原创 2017-07-20 15:20:08 · 151 阅读 · 0 评论 -
java并发(七、高级并发对象)
到目前,这课程从一开就集中在java 平台的部分低级API 。这些API 适合于适合于非常基础的任务,但是高级构建需要更高级的任务。特别是在今天充分利用多核心系统上的并发应用。在这一章,我们将考虑5.0 版本的java 平台引进的一些高级并发特点的。大多数特性是在java.util.concurrent 包下实现的。在Java 集合框架中也有新的并发数据结构。l Lock 对象支持的锁方...翻译 2017-07-20 15:17:01 · 518 阅读 · 0 评论 -
java并发(六、不可变对象)
如果一个对象在构造之后不可改变,那么这个对象就是不可变对象。不可变对象被广泛认同的作用是建立简单、可靠代码的万全之策。 不可变对象在并发应用程序中特别有用,因为他们不能被修改,他们不能发生线程冲突,或者发生不一致状态的读取。 程序员经常不心甘情愿的使用不可变对象,因为他们不能修改这个对象,只能new一个对象。创建对象的开销一般是被评估过高的,可以和不可能变对象相关的效率问题抵消...翻译 2017-07-20 15:16:53 · 396 阅读 · 0 评论 -
java并发(五、保护块)
线程必须经常协调他们的活动。最普通的协调方法是保护块(guarded block)。以循环条件开始的代码块必须在循环条件为真时代码块才能够执行。为了正确操作有许多步骤需要遵守。假设,比如 guardedJoy方法直到共享变量joy被另一个线程修改才会执行。理论上,这个方法一直在循环直到满足条件,但是这个循环很浪费,因为它在等待的时候不停的在运行。public void guardedJoy...翻译 2017-07-20 15:16:46 · 244 阅读 · 0 评论 -
java并发(四、活性)
四、活性(一) 死锁一个并发应用的即使执行能力叫做它的活性。这章描述了很多一般类型的活性问题,死锁,然后简单的描述了另两个问题,饥饿和活锁。死锁就是俩个或多个线程互相等待造成永远被阻塞的状况。这里有一个例子。Alphonse和Gaston是朋友,并且非常讲礼貌。有礼的一个严苛的准则就是当你向你朋友鞠躬时,你必须保持鞠躬的姿势直到你朋友给你回应一个鞠躬。不幸的是,这个规则在俩个朋友在同一时...翻译 2017-07-20 15:16:39 · 325 阅读 · 0 评论 -
java并发(三、同步)
三、同步线程通信首先通过共同访问一个字段、对象的字段。这种形式的通信是非常有效的。但是会产生两种错误:线程冲突和内存一致性错误。需要用Synchronization工具避免这些错误。l 线程冲突:描述了当多个线程访问共享数据时错误是怎么发生的。l 内存一致错误:描述了共享内存的不一致展现的错误结果。l 同步方法:描述了一个简单的习惯,能够避免线程冲突和内存不一致错误。l...翻译 2017-07-20 15:16:32 · 260 阅读 · 0 评论 -
java并发(二、线程对象)
二、线程对象每个线程是类 Thread的一个实例。有两个使用线程对象创建一个并发应用的策略。直接创建和管理线程,每次应用需要开始一个异步任务时,简单的实例化Thread从其余的应用抽象出线程管理,把应用任务传给executor。这一段使用Thread对象。Executors在高级并发对象一段里讨论。(一) 定义和开始一个线程一个应用创建一个线程实例,必须...翻译 2017-07-20 15:16:23 · 191 阅读 · 0 评论 -
java并发(一、进程和线程)
译者:本人没过四级,完全依赖翻译软件和想象力翻译,所以还请对照着原文阅读。官方地址:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html计算机用户理所当然的认为他们的系统可以同时做很多事。他们认为他们可以在使用文字处理的同时,下载文件,管理打印队列,播放音频。即使是一个单独的应用也经...翻译 2017-07-20 15:16:16 · 338 阅读 · 0 评论