
Oracle官方并发教程
文章平均质量分 78
hoonee1987
这个作者很懒,什么都没留下…
展开
-
03.Oracle官方并发教程之线程对象
在Java中,每个线程都是Thread类的实例。并发应用中一般有两种不同的线程创建策略。直接控制线程的创建和管理,每当应用程序需要执行一个异步任务的时候就为其创建一个线程,将线程的管理从应用程序中抽象出来作为执行器,应用程序将任务传递给执行器,有执行器负责执行。 这一节,我们将讨论Thread对象,有关Executors将在高级并发对象一节中讨论。 定义并启动一个线程原创 2014-05-24 12:13:52 · 511 阅读 · 0 评论 -
06.Oracle官方并发教程之Guarded Blocks
多线程之间经常需要协同工作,最常见的方式是使用Guarded Blocks,它循环检查一个条件(通常初始值为true),直到条件发生变化才跳出循环继续执行。在使用Guarded Blocks时有以下几个步骤需要注意: 假设guardedJoy()方法必须要等待另一线程为共享变量joy设值才能继续执行。那么理论上可以用一个简单的条件循环来实现,但在等待过程中guardedJoy方法不 停原创 2014-05-24 17:43:46 · 392 阅读 · 0 评论 -
04.Oracle官方并发教程之同步
线程间的通信主要是通过共享域和引用相同的对象。这种通信方式非常高效,不过可能会引发两种错误:线程干扰和内存一致性错误。防止这些错误发生的方法是 同步。 不过,同步会引起线程竞争,当两个或多个线程试图同时访问相同的资源,随之就导致Java运行时环境执行其中一个或多个线程比原先慢很多,甚至执行被挂起, 这就出现了线程竞争。线程饥饿和活锁都属于线程竞争的范畴。关于线原创 2014-05-24 16:05:10 · 469 阅读 · 0 评论 -
05.Oracle官方并发教程之活跃度
一个并发应用程序能及时执行的能力称为活跃性。本节将介绍最常见的活跃性问题:死锁(deadlock),以及另外两个活跃性问题:饥饿(starvation)和活锁( livelock)。 死锁 死锁描述了这样一种情景,两个或多个线程永久阻塞,互相等待对方释放资源。下面是一个例子。 Alphone和Gaston是朋友,都很讲究礼节。礼节有一个严格的规矩,当你向一个原创 2014-05-24 16:36:10 · 493 阅读 · 0 评论 -
01.Oracle官方并发教程之概述
标注:本文zhuanzhi 原文地址: 翻译地址: 计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理 程序上工作。甚至对于单个应用程序,他们任然期待它能在在同一时间做很多事情。举个例子,一个流媒体播放程序必须能同时完成以下工作:从网络上读取数字 音频,解压缩数字音频,管理原创 2014-05-24 11:30:13 · 495 阅读 · 0 评论 -
07.Oracle官方并发教程之不可变对象
一个对象如果在创建后不能被修改,那么就称为不可变对象。在并发编程中,一种被普遍认可的原则就是:尽可能的使用不可变对象来创建简单、可靠的代码。 在并发编程中,不可变对象特别有用。由于创建后不能被修改,所以不会出现由于线程干扰产生的错误或是内存一致性错误。 但是程序员们通常并不热衷于使用不可变对象,因为他们担心每次创建新对象的开销。实际上这种开销常常被过分高估,而且使用不可变对象所带来原创 2014-05-24 17:51:16 · 472 阅读 · 0 评论