国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

線程基礎(chǔ)---wait(),notify的應(yīng)用一例

2019-11-17 05:58:36
字體:
供稿:網(wǎng)友

本例子實現(xiàn)了兩個線程,每個線程輸出1到100的數(shù)字。第一個線程輸出1-10,停止,通知第二個線程 輸出1-10 第二個線程停止 通知第一個線程 輸出11-20 ...實現(xiàn)的要點是在java中,每個對象都有個對象鎖標(biāo)志(Object lock flag)與之想關(guān)聯(lián),當(dāng)一個線程A調(diào)用對象的一段synchronized代碼時,它首先要獲取與這個對象關(guān)聯(lián)的對象鎖標(biāo)志,然后執(zhí)行相應(yīng)的代碼,執(zhí)行結(jié)束后,把這個對象鎖標(biāo)志返回給對象;因此,在線程A執(zhí)行synchronized代碼期間,假如另一個線程B也要執(zhí)行同一對象的一段synchronized代碼時(不一定與線程A執(zhí)行的相同),它將要等到線程A執(zhí)行完后,才能繼續(xù)....

如何利用wait() notify() notifyAll()?

在synchronized代碼被執(zhí)行期間,線程可以調(diào)用對象的wait()方法,釋放對象鎖標(biāo)志,進(jìn)入等待狀態(tài),并且可以調(diào)用notify()或者notifyAll()方法通知正在等待的其他線程。notify()通知等待隊列中的第一個線程,notifyAll()通知的是等待隊列中的所有線程。

 
package jdeveloper.study;
/**
 * Title:        Jdeveloper's Java PRojdect
 * Description:  n/a
 * Copyright:    Copyright (c) 2001
 * Company:      soho  http://www.ChinaJavaWorld.com
 * @author jdeveloper@21cn.com
 * @version 1.0
 */
import java.lang.Runnable;
import java.lang.Thread;
public class DemoThread implements Runnable{
  public DemoThread() {
         TestThread testthread1 = new TestThread(this,"1");
         TestThread testthread2 = new TestThread(this,"2");
         testthread2.start();
         testthread1.start();
  }
  public static void main(String[] args) {
    DemoThread demoThread1 = new DemoThread();
  }
   public void run(){
        TestThread t = (TestThread) Thread.currentThread();
        try{
          if (!t.getName().equalsIgnoreCase("1")) {
              synchronized(this) {
                  wait();
              }
          }
          while(true){


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永济市| 延边| 霍林郭勒市| 凌源市| 莎车县| 淅川县| 明水县| 南阳市| 胶州市| 夹江县| 新民市| 大安市| 黎城县| 金湖县| 肇源县| 府谷县| 威远县| 阿图什市| 甘谷县| 仪征市| 洛浦县| 休宁县| 山丹县| 孟村| 蕉岭县| 永昌县| 漳浦县| 桂阳县| 运城市| 莱州市| 镇巴县| 丹棱县| 马公市| 邢台市| 鹤壁市| 鱼台县| 方山县| 宿州市| 额济纳旗| 姜堰市| 靖州|