欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在Java中實(shí)現(xiàn)多線程通信-創(chuàng)新互聯(lián)

本篇文章為大家展示了怎么在Java中實(shí)現(xiàn)多線程通信,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了信宜免費(fèi)建站歡迎大家使用!

1、共享變量

線程間通信可以通過發(fā)送信號(hào),發(fā)送信號(hào)的一個(gè)簡(jiǎn)單方式是在共享對(duì)象的變量里設(shè)置信號(hào)值。線程A在一個(gè)同步塊里設(shè)置boolean型成員變量hasDataToProcess為true,線程B也在同步代碼塊里讀取hasDataToProcess這個(gè)成員變量。這個(gè)簡(jiǎn)單的例子使用了一個(gè)持有信號(hào)的對(duì)象,并提供了set和get方法。

public class MySignal1 {
  //共享的變量
  private boolean hasDataToProcess = false;

  //取值
  public boolean getHasDataProcess() {
    return hasDataToProcess;
  }

  //存值
  public void setHasDataToProcess(boolean hasDataToProcess) {
    this.hasDataToProcess = hasDataToProcess;
  }

  public static void main(String[] args) {
    //同一個(gè)對(duì)象
    final MySignal1 my = new MySignal1();
    //線程1設(shè)置hasDataToProcess值為true
    final Thread t1 = new Thread(new Runnable() {
      @Override
      public void run() {
        my.setHasDataToProcess(true);
      }
    });
    t1.start();
    //線程2取這個(gè)值hasDataToProcess
    Thread t2 = new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          //等待線程1完成后取值
          t1.join();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        my.getHasDataProcess();
        System.out.println("t1改變以后的值:"+my.getHasDataProcess());
      }
    });
    t2.start();
  }
}

運(yùn)行結(jié)果如下:

t1改變以后的值:true

2、等待/喚醒(wait/notify)機(jī)制

以資源為例,生產(chǎn)者生產(chǎn)一個(gè)資源,通知消費(fèi)者就消費(fèi)掉一個(gè)資源,生產(chǎn)者繼續(xù)生產(chǎn)資源,消費(fèi)者消費(fèi)資源,以此循環(huán),代碼如下。

import sun.security.util.Password;

//資源類
class Resource {
  private String name;
  private int count = 1;
  private boolean flag = false;

  public synchronized void set(String name) {
    //生產(chǎn)資源
    while (flag) {
      try {
        //線程等待
        wait();
      } catch (InterruptedException e) {
      }
    }
    this.name = name + "----" + count + "+++++";
    System.out.println(Thread.currentThread().getName() + "..生產(chǎn)者..." + this.name);
    flag = true;
    //喚醒等待中的消費(fèi)者
    this.notifyAll();
  }

  public synchronized void out() {
    //消費(fèi)資源
    while (!flag) {
      try {
        //線程等待,生產(chǎn)者生產(chǎn)資源
        wait();
      } catch (InterruptedException e) {
      }
    }
    System.out.println(Thread.currentThread().getName() + "...消費(fèi)者..." + this.name);
    flag = false;
    //喚醒消費(fèi)者,生產(chǎn)資源
    this.notifyAll();
  }
}

//生產(chǎn)者
class Producer implements Runnable {
  private Resource rs;

  public Producer(Resource rs) {
    this.rs = rs;
  }

  //生產(chǎn)者生產(chǎn)資源
  @Override
  public void run() {
    while (true) {
      rs.set("商品");
    }
  }
}

//消費(fèi)者消費(fèi)資源
class Consumer implements Runnable {
  private Resource rs;

  public Consumer(Resource rs) {
    this.rs = rs;
  }

  //消費(fèi)者消費(fèi)資源
  @Override
  public void run() {
    while (true) {
      rs.out();
    }
  }
}

public class ProducerConsumerDemo {
  public static void main(String[] args) {
    Resource r = new Resource();
    Producer p = new Producer(r);
    Consumer c = new Consumer(r);
    Thread t1 = new Thread(p);
    Thread t2 = new Thread(c);
    t1.start();
    t2.start();
  }
}

運(yùn)行結(jié)果如下:

Thread-0..生產(chǎn)者...商品----1+++++
Thread-1...消費(fèi)者...商品----1+++++
Thread-0..生產(chǎn)者...商品----1+++++
Thread-1...消費(fèi)者...商品----1+++++
Thread-0..生產(chǎn)者...商品----1+++++
Thread-1...消費(fèi)者...商品----1+++++
Thread-0..生產(chǎn)者...商品----1+++++

上述內(nèi)容就是怎么在Java中實(shí)現(xiàn)多線程通信,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱:怎么在Java中實(shí)現(xiàn)多線程通信-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://chinadenli.net/article42/dehoec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、全網(wǎng)營銷推廣、微信小程序、網(wǎng)站收錄、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
国产色第一区不卡高清| 五月婷婷缴情七月丁香| 免费在线成人午夜视频| 综合久综合久综合久久| 美女被草的视频在线观看| 国产精品亚洲一区二区| 色婷婷人妻av毛片一区二区三区| 成人精品日韩专区在线观看| 国产一区二区不卡在线视频| 在线观看免费午夜福利| 老鸭窝老鸭窝一区二区| 亚洲av秘片一区二区三区| 亚洲欧洲日韩综合二区| 少妇一区二区三区精品| 老司机精品视频免费入口| 爱草草在线观看免费视频| 中日韩免费一区二区三区| 亚洲欧美日韩国产综合在线| 亚洲男人的天堂色偷偷| 精品一区二区三区中文字幕| 欧美在线观看视频三区| 精品欧美一区二区三久久| 色婷婷在线视频免费播放| 欧美精品二区中文乱码字幕高清| 欧美日韩国产二三四区| 丰满少妇被粗大猛烈进出视频 | 欧美区一区二区在线观看| 麻豆国产精品一区二区| 国产亚洲精品一二三区| 九九热精彩视频在线播放| 国产无摭挡又爽又色又刺激| 激情中文字幕在线观看| 人人妻人人澡人人夜夜| 91超频在线视频中文字幕| 国内外免费在线激情视频| 国产永久免费高清在线精品| 国产小青蛙全集免费看| 亚洲天堂有码中文字幕视频| 99久久精品午夜一区| 国语对白刺激高潮在线视频| 免费精品一区二区三区|