自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java線程控制權(quán)源代碼的深入探討

開發(fā) 后端
Java編程語言一直在不斷的發(fā)展,但是Java線程控制權(quán)卻一直是重中之重。下面我們就來看看在Java中詳細(xì)的介紹希望大家有所收獲。

Java線程控制權(quán)的問題十分重要,我們?cè)诓粩嗟膶W(xué)習(xí)中需要不斷的注意相關(guān)的問題。下面我們就來看看在源代碼中Java線程控制權(quán)式如何體現(xiàn)的。當(dāng)wait的時(shí)候其實(shí)就是已經(jīng)放出了線程的控制權(quán),所以one可以運(yùn)行。one運(yùn)行時(shí)調(diào)用notify后又喚醒了two線程所以打印順序才是:

wait
sleep
wake up

我覺得我解釋的已經(jīng)很清楚了。wait被調(diào)用的時(shí)候放棄鎖,而控制線程是否能使用內(nèi)容的關(guān)鍵就在于鎖,wait并不是thread的內(nèi)容,而來自于object。你可以這樣來理解wait,我wait下就把接力棒交出去了,我當(dāng)前的這個(gè)線程就暫停運(yùn)行,記住是當(dāng)前的線程。然后當(dāng)我交出的接力棒已經(jīng)又回到我手中的時(shí)候,也就是說其他的線程已經(jīng)完成了任務(wù)。這個(gè)時(shí)候我拿到接力棒繼續(xù)奔跑。

有時(shí)候你應(yīng)該把問題簡單化,建議你看看thinking in java第四版,我明白你是想觀察阻塞的出現(xiàn),你可以將one。start放到two。start的上邊就會(huì)明白什么意思了
 

  1. package test;  
  2. import java.util.LinkedList;  
  3. public class Test_2_A2 {  
  4. public static void main(String[] args) {  
  5. SubTreadOne one = new SubTreadOne();  
  6. SubTreadTwo two = new SubTreadTwo(one);  
  7. two.start();  
  8. try {  
  9. Thread.sleep(1000);  
  10. } catch (InterruptedException e) {  
  11. e.printStackTrace();  
  12. }  
  13. one.start();  
  14. }  
  15. }  
  16. class SubTreadOne extends Thread {  
  17. public SubTreadOne() {  
  18. }  
  19. public void run() {  
  20. try {  
  21. System.out.println("sleep");  
  22. Thread.sleep(3000);  
  23. synchronized (this) {  
  24. this.notifyAll();  
  25. }  
  26. }catch (InterruptedException e) {  
  27. e.printStackTrace();  
  28. }  
  29. }  
  30. }  
  31. class SubTreadTwo extends Thread {  
  32. SubTreadOne one;  
  33. public SubTreadTwo(SubTreadOne one) {  
  34. this.one = one;  
  35. }  
  36. public SubTreadTwo() {  
  37. }  
  38. public void run() {  
  39. try {  
  40. synchronized (one) {  
  41. System.out.println("wait");  
  42. one.wait();  
  43. System.out.println("wake up");  
  44. }  
  45. } catch (InterruptedException e) {  
  46. e.printStackTrace();  
  47. }  
  48. }  

以上就是對(duì)Java線程控制權(quán)有關(guān)代碼的詳細(xì)介紹。

【編輯推薦】

  1. 使用Java多線程實(shí)現(xiàn)任務(wù)分發(fā)
  2. 用Java多線程實(shí)現(xiàn)無阻塞讀取遠(yuǎn)程文件
  3. Java多線程中wait語句的具體使用方法
  4. Java多線程如何解決關(guān)鍵字封鎖問題
  5. Java多線程如何創(chuàng)建多個(gè)線程
責(zé)任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-03-15 16:31:34

Java多線程

2024-11-05 16:29:57

2015-09-02 08:57:56

JavaHashMap工作原理

2011-02-25 09:23:00

Java類加載器

2009-12-23 16:13:00

WPF Attache

2010-03-31 14:58:03

云計(jì)算

2010-11-22 14:18:32

MySQL鎖機(jī)制

2010-07-21 09:38:15

PHP緩存技術(shù)

2009-12-07 16:07:03

PHP類的繼承

2009-06-16 10:51:14

Java源碼

2009-11-20 17:17:08

Oracle函數(shù)索引

2021-05-17 05:36:02

CSS 文字動(dòng)畫技巧

2024-12-26 01:07:13

2014-08-22 09:08:23

遠(yuǎn)程控制木馬

2009-12-01 16:34:21

PHP表單

2009-10-16 18:20:07

綜合布線系統(tǒng)

2023-10-23 12:35:36

Golang追加操作

2009-08-27 11:27:58

foreach語句C# foreach語

2010-03-05 13:44:00

Python序列

2023-01-12 17:18:06

數(shù)據(jù)庫多云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)