File tree Expand file tree Collapse file tree 2 files changed +5
-5
lines changed Expand file tree Collapse file tree 2 files changed +5
-5
lines changed Original file line number Diff line number Diff line change 52
52
- 由于java不能多继承可以实现多个接口,因此,在创建线程的时候尽量多考虑采用实现接口的形式;
53
53
- 实现callable接口,提交给ExecutorService返回的是异步执行的结果,另外,通常也可以利用FutureTask(Callable<V > callable)将callable进行包装然后FeatureTask提交给ExecutorsService。如图,
54
54
55
- ![ FutureTask接口实现关系] ( https://github.com/CL0610/Java-concurrency/blob/master/2.%E7%BA%BF%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E4%BB%A5%E5%8F%8A%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ futureTask%E6%8E%A5%E5%8F%A3%E5%AE%9E%E7%8E%B0%E5%85%B3%E7%B3%BB.png)
55
+ ![ FutureTask接口实现关系] ( futureTask%E6%8E%A5%E5%8F%A3%E5%AE%9E%E7%8E%B0%E5%85%B3%E7%B3%BB.png )
56
56
57
57
58
58
另外由于FeatureTask也实现了Runable接口也可以利用上面第二种方式(实现Runable接口)来新建线程;
61
61
# 2. 线程状态转换 #
62
62
63
63
64
- ![ 线程状态转换图] ( https://github.com/CL0610/Java-concurrency/blob/master/2.%E7%BA%BF%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E4%BB%A5%E5%8F%8A%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ %E7%BA%BF%E7%A8%8B%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E5%85%B3%E7%B3%BB.png)
64
+ ![ 线程状态转换图] ( %E7%BA%BF%E7%A8%8B%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E5%85%B3%E7%B3%BB.png )
65
65
66
66
67
67
71
71
72
72
用一个表格将上面六种状态进行一个总结归纳。
73
73
74
- ![ JAVA线程的状态] ( https://github.com/CL0610/Java-concurrency/blob/master/2.%E7%BA%BF%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E4%BB%A5%E5%8F%8A%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ %E7%BA%BF%E7%A8%8B%E7%8A%B6%E6%80%81.png)
74
+ ![ JAVA线程的状态] ( %E7%BA%BF%E7%A8%8B%E7%8A%B6%E6%80%81.png )
75
75
76
76
77
77
# 3. 线程状态的基本操作 #
83
83
isInterrupted()来感知其他线程对其自身的中断操作,从而做出响应。另外,同样可以调用Thread的静态方法
84
84
interrupted()对当前线程进行中断操作,该方法会清除中断标志位。** 需要注意的是,当抛出InterruptedException时候,会清除中断标志位,也就是说在调用isInterrupted会返回false。**
85
85
86
- ![ 线程中断的方法] ( https://github.com/CL0610/Java-concurrency/blob/master/2.%E7%BA%BF%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E4%BB%A5%E5%8F%8A%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ %E4%B8%AD%E6%96%AD%E7%BA%BF%E7%A8%8B%E6%96%B9%E6%B3%95.png)
86
+ ![ 线程中断的方法] ( %E4%B8%AD%E6%96%AD%E7%BA%BF%E7%A8%8B%E6%96%B9%E6%B3%95.png )
87
87
88
88
89
89
Original file line number Diff line number Diff line change 12
12
* [ 11.深入理解读写锁ReentrantReadWriteLock] ( 11.深入理解读写锁ReentrantReadWriteLock/深入理解读写锁ReentrantReadWriteLock.md )
13
13
* [ 12.详解Condition的await和signal等待通知机制] ( 12.详解Condition的await和signal等待通知机制/详解Condition的await和signal等待通知机制.md )
14
14
* [ 13.LockSupport工具] ( 13.LockSupport工具/LockSupport工具.md )
15
- * [ 14.并发容器之ConcurrentHashMap(JDK 1 .8版本) ] (14.并发容器之ConcurrentHashMap(JDK 1 .8版本)/并发容器之ConcurrentHashMap(JDK 1 .8版本).md)
15
+ * [ 14.并发容器之ConcurrentHashMapJDK1 .8版本] ( 14.并发容器之ConcurrentHashMap(JDK%201 .8版本)/并发容器之ConcurrentHashMap(JDK%201 .8版本).md )
16
16
* [ 15.并发容器之ConcurrentLinkedQueue] ( 15.并发容器之ConcurrentLinkedQueue/并发容器之ConcurrentLinkedQueue.md )
17
17
* [ 16.并发容器之CopyOnWriteArrayList] ( 16.并发容器之CopyOnWriteArrayList/并发容器之CopyOnWriteArrayList.md )
18
18
* [ 17.并发容器之ThreadLocal] ( 17.并发容器之ThreadLocal/并发容器之ThreadLocal.md )
You can’t perform that action at this time.
0 commit comments