- 博客(20)
- 资源 (2)
- 收藏
- 关注
原创 (48)21.4.4 检查中断---Java编程思想之并发笔记
21.4.4 检查中断1.中断状态的设置 通过用interrupted()来检查中断状态,这个不仅可以告诉你interrupt()是否被调用过,而且可以清除中断状态。清除中断状态可以确保并发结构不会就某个任务被中断这个问题通知你两次,你可以经由单一的InterruptedException或单一的成功的Thread.interrupted()测试来得到这种通知。2.例子
2012-12-31 15:52:42 551
原创 (47)21.4.3 中断2---Java编程思想之并发笔记
被互斥所阻塞1. 在一个对象上调用synchronized方法,而这个对象在锁已经被其它对象获得,那么调用任务就被挂起,直到这个锁可以获得。2. 例子:package jiangning.c21;public class MultiLock { public synchronized void f1(int count){ i
2012-12-31 15:52:20 516
原创 (43)21.4.3 中断---Java编程思想之并发笔记
1. 中断的位置和要处理的资源 在Runnable.run()方法的中间打断它,当打断被阻塞的任务的时候,可能要清理资源。为了返回良好的状态,必须仔细考虑代码的执行路径,并仔细写catch子句以正确清除所有事物。2.Thread类中的interrupt()方法, 可以用来终止任务,这个方法将设置线程的中断状态。如果一个线程已经被阻塞,或者试图执行一个阻塞的操作,
2012-12-31 15:50:52 685
原创 (42)21.4.2 在阻塞时终结---Java编程思想之并发笔记
1. 线程状态可以分为4种1)新建(new):当线程被创建时,它只会短暂地处于这种状态。此时它已经分配了必需的系统资源,并执行了初始化。此刻线程已有资格获得CPU时间了,之后调度器将把这个线程转变为可运行状态或阻塞状态。2)就绪(Runnable):在这种状态下,只要调度器把时间片分配给线程,线程就可以运行。也就是在任意时刻,线程可以运行也可以不运行。只要调度器能分配时间片给线程,它就可以
2012-12-31 15:50:25 525
原创 (40)21.4.1 装饰性花园---Java编程思想之并发笔记
1. 问题的提出: 仿真程序,花园委员会希望了解每天通过多个大门进入公园的总人数。每个大门都有一个计数器,并且每个十字转门的计数值递增时,就表示公园中的总人数的共享计数值也会递增。2.例1package jiangning.c21;import java.util.ArrayList;import java.util.List;import java
2012-12-31 15:49:09 960 5
原创 (39)21.4 终结任务---Java编程思想之并发笔记
1.本节内容是学习关于终止的各类话题和问题。 在前面例子中用到了cancel()和isCanceled()方法被放到一个所有任务都可以看到的类中,这些任务通过检查isCanceled()来确定何时终止他们自己。但是在某些任务中必须更加突然地终止,这将是本节要将的内容。
2012-12-31 15:48:35 535
原创 (38)21.3.8 线程本地存储---Java编程思想之并发笔记
1.防止任务在共享资源上产生冲突的第二种方式是根除对变量的共享。 线程本地存储是一种自动化机制,可以为使用相同变量的每个不同的线程都创建不同的存储。因此如果你有5个线程都要使用变量x所表示的对象,那线程本地存储就会生成5个用于x的不同的存储块。主要是,它们使得你可以将状态与线程关联起来。2.创建和管理本地线程由java.lang.ThreadLocal类实现
2012-12-31 15:47:41 524
原创 (35)21.3.6 在其它对象上同步---Java编程思想之并发笔记
1. synchronized块必须给定一个在其上进行同步的对象,并且最合理的方式是,使用其方法正在调用的当前对象:synchronized(this),在这种方式中,如果获得了synchronized块上的锁,那么该对象其他的synchronized方法和临界区就不能被调用了。因此如果在this上同步,临界区的效果就会直接缩小在同步的范围内。2.在另一个对象上同步。 有时候必须在另
2012-12-31 15:46:04 626
原创 (34)21.3.5 临界区---Java编程思想之并发笔记
1. 临界区:只希望防止多个线程同时访问方法内部的部分代码而不是正规方法,通过这种方式分离出来的代码段被称为临界区(critical section)。使用关键字synchronized关键字建立。这里synchronized被用来指定某个对象,此对象的锁被用来对花括号内的代码进行同步。2. 代码格式:synchronized(object){//同步代码块}这
2012-12-31 15:45:36 1970 2
原创 (32)21.3.4 原子类---Java编程思想之并发笔记
1.原子类 Java SE5引入的特殊原子类:AutomaticInteger、AtomicLong、AtomicReference等特殊的原子性变量类,它们提供了下面形式的原子性条件更新操作: boolean compareAndSet(expectedValue, updateValue); 这些原子类在进行性能调优的时候很有用处。package
2012-12-31 15:44:35 1074
原创 (29)21.3.3 原子性与易变性---Java编程思想之并发笔记
1.原子操作 原子操作时不能被线程机制中断的操作;一旦操作开始,那么一定可以在可能发生的“上下文切换”之前(切换到其它线程执行)执行完毕。 一般情况下不能用原代替同步,除非你是并发专家。否则就是在玩火。 “如果你可以编写用于现代未处理器的高性能JVM,那么就有资格去考虑是否可以避免同步”。 了解原子性是很有用的,原子性可以应用于除long和double之外的
2012-12-31 15:42:35 1102
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人