成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java notify喚醒源代碼的經(jīng)典講例

開(kāi)發(fā) 后端
Java notify喚醒在使用中如何才能更好的在使用中找到自己的地位?這就需要我們不斷的學(xué)習(xí)相關(guān)的源代碼。下面我們就來(lái)詳細(xì)的了解。

Java notify喚醒在此對(duì)象監(jiān)視器上等待的單個(gè)線(xiàn)程。相關(guān)的問(wèn)題需要我們不斷的學(xué)習(xí),下面我們就看看如何才能更好的使用。如果所有線(xiàn)程都在此對(duì)象上等待,則會(huì)選擇喚醒其中一個(gè)線(xiàn)程。

直到當(dāng)前的線(xiàn)程放棄此對(duì)象上的鎖定,才能繼續(xù)執(zhí)行被喚醒的線(xiàn)程。此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線(xiàn)程來(lái)調(diào)用.

"當(dāng)前的線(xiàn)程必須擁有此對(duì)象監(jiān)視器"與"此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線(xiàn)程來(lái)調(diào)用"說(shuō)明wait方法與notify方法必須在同步塊內(nèi)執(zhí)行,即synchronized(obj之內(nèi)).

調(diào)用對(duì)像wait方法后,當(dāng)前線(xiàn)程釋放對(duì)像鎖,進(jìn)入等待狀態(tài).直到其他線(xiàn)程(也只能是其他線(xiàn)程)通過(guò)Java notify喚醒方法,或 notifyAll.該線(xiàn)程重新獲得對(duì)像鎖.
繼續(xù)執(zhí)行,記得線(xiàn)程必須重新獲得對(duì)像鎖才能繼續(xù)執(zhí)行.因?yàn)閟ynchronized代碼塊內(nèi)沒(méi)有鎖是寸步不能走的.看一個(gè)很經(jīng)典的例子:

 

Java notify喚醒代碼

  1. package ProductAndConsume;   
  2. import java.util.List;   
  3. public class Consume implements Runnable{   
  4. private List container = null;   
  5. private int count;   
  6. public Consume(List lst){   
  7. this.container = lst;   
  8. }   
  9. public void run() {   
  10. while(true){   
  11. synchronized (container) {   
  12. if(container.size()== 0){   
  13. try {   
  14. container.wait();//放棄鎖   
  15. } catch (InterruptedException e) {   
  16. e.printStackTrace();   
  17. }   
  18. }   
  19. try {   
  20. Thread.sleep(100);   
  21. } catch (InterruptedException e) {   
  22. // TODO Auto-generated catch block   
  23. e.printStackTrace();   
  24. }   
  25. container.remove(0);   
  26. container.notify();   
  27. System.out.println("我吃了"+(++count)+"個(gè)");   
  28. }   
  29. }   
  30. }   
  31. }   
  32. package ProductAndConsume;   
  33. import java.util.List;   
  34. public class Product implements Runnable {   
  35. private List container = null;   
  36. private int count;   
  37. public Product(List lst) {   
  38. this.container = lst;   
  39. }   
  40. public void run() {   
  41. while (true) {   
  42. synchronized (container) {   
  43. if (container.size() > MultiThread.MAX) {   
  44. try {   
  45. container.wait();   
  46. } catch (InterruptedException e) {   
  47. e.printStackTrace();   
  48. }   
  49. }   
  50. try {   
  51. Thread.sleep(100);   
  52. } catch (InterruptedException e) {   
  53. e.printStackTrace();   
  54. }   
  55. container.add(new Object());   
  56. container.notify();   
  57. System.out.println("我生產(chǎn)了"+(++count)+"個(gè)");   
  58. }   
  59. }   
  60. }   
  61. }   
  62. package ProductAndConsume;   
  63. import java.util.ArrayList;   
  64. import java.util.List;   
  65. public class MultiThread {   
  66. private List container = new ArrayList();   
  67. public final static int MAX = 5;   
  68. public static void main(String args[]){   
  69. MultiThread m = new MultiThread();   
  70. new Thread(new Consume(m.getContainer())).start();   
  71. new Thread(new Product(m.getContainer())).start();   
  72. new Thread(new Consume(m.getContainer())).start();   
  73. new Thread(new Product(m.getContainer())).start();   
  74. }   
  75. public List getContainer() {   
  76. return container;   
  77. }   
  78. public void setContainer(List container) {   
  79. this.container = container;   
  80. }  

以上就是對(duì)Java notify喚醒相關(guān)代碼的介紹。希望大家有所幫助。

【編輯推薦】

  1. Java多線(xiàn)程進(jìn)程應(yīng)對(duì)同一程序運(yùn)行資源
  2. Java多線(xiàn)程方案如何處理關(guān)鍵代碼
  3. Java多線(xiàn)程操作相關(guān)問(wèn)題總結(jié)
  4. Java多線(xiàn)程循環(huán)相關(guān)的代碼介紹
  5. Java多線(xiàn)程靜態(tài)數(shù)據(jù)如何進(jìn)行數(shù)據(jù)同步
責(zé)任編輯:張浩 來(lái)源: 博客園
相關(guān)推薦

2022-04-20 07:47:00

notify喚醒線(xiàn)程JVM

2019-03-12 11:11:25

開(kāi)源Leveldb存儲(chǔ)

2011-04-22 10:43:37

JavaScript

2011-05-18 10:52:51

java編碼規(guī)范

2011-12-15 10:10:33

Javanio

2020-11-13 13:05:27

Java開(kāi)發(fā)代碼

2010-03-19 16:51:53

Java Socket

2009-04-03 08:28:39

2010-03-18 14:46:18

Java SynDem

2023-12-05 13:46:09

解密協(xié)程線(xiàn)程隊(duì)列

2010-03-17 19:06:59

Java join線(xiàn)程

2016-10-11 16:28:11

源代碼

2009-06-12 19:03:41

Hadoop源代碼Yahoo

2010-04-29 12:57:33

Unix源代碼

2010-08-03 10:16:52

Flex源代碼

2010-03-19 15:02:50

Java Socket

2010-03-17 17:11:04

Java線(xiàn)程通信

2009-06-22 13:41:00

Java開(kāi)放源代碼Sun

2011-08-02 10:13:30

Java工具

2025-03-21 14:31:14

NumPyPython數(shù)組
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美午夜一区二区三区免费大片 | 草草草影院 | av特级毛片 | 99精品久久久国产一区二区三 | 亚洲性在线 | 波多野结衣一区二区 | 日日干日日色 | 三级视频久久 | 精品福利一区二区三区 | 久久精品视频网站 | 国产欧美一区二区三区免费 | 亚洲视频在线看 | 精品国产一区二区三区免费 | 国产ts人妖系列高潮 | 91精品国产91久久久久游泳池 | 欧美激情第一区 | 日韩电影中文字幕 | 99视频在线免费观看 | 日韩精品在线观看一区二区三区 | 成人精品视频在线观看 | 一区二区三区视频在线免费观看 | 日本午夜免费福利视频 | 精品欧美一区二区三区免费观看 | 99久久精品国产一区二区三区 | 日韩中文一区二区三区 | 久久成人在线视频 | 国产精品久久a | 久久久人 | 黄免费观看视频 | 久久999| 亚洲3p| 一区二区三区欧美在线 | 中文字幕综合 | 天堂网中文字幕在线观看 | 很黄很污的网站 | 亚洲一区二区三区在线视频 | 久草视频在线播放 | 国产小视频在线 | 精精久久 | 亚洲色图综合网 | 日韩一区二区久久 |