麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

深入同步訪問共享的可變數據分析

2019-11-26 16:03:34
字體:
來源:轉載
供稿:網友
如果對共享的可變數據的訪問不能同步,其后果非常可怕,即使這個變量是原子可讀寫的。
下面考慮一個線程同步方面的問題。對于線程同步,Java類庫提供了Thread.stop的方法,但是這個方法并不值得提倡,因為它本質上是不安全的。使用輪詢(Polling)的方式會更好,例如下面這段程序。
復制代碼 代碼如下:

import java.util.concurrent.TimeUnit;
public class StopThread {
 /**
  * @param args
  */

 private static boolean stopRequested;

 public static void main(String[] args)
  throws InterruptedException{

  Thread backgroundThread = new Thread(new Runnable() {

   @Override
   public void run() {

    int i = 0;
    while(!stopRequested){
     i++;
     System.out.println(i);
    }
   }
  });
  backgroundThread.start();
  TimeUnit.SECONDS.sleep(1);
  stopRequested = true;
 }
}

你可能會認為這個程序在運行大約一秒后,由于主線程把stopRequested設成了true,使得后臺的新線程停止,其實不然,因為后臺線程看不到這個值的變化,所以會一直無線循環下去,這就是沒有對數據進行同步的后果。因此讓我們用同步的方式來實現這個任務。
復制代碼 代碼如下:

import java.util.concurrent.TimeUnit;
public class StopThread {
 /**
  * @param args
  */

 private static boolean stopRequested;

 private static synchronized void requestStop(){
  stopRequested = true;
 }
 private static synchronized boolean stopRequested(){
  return stopRequested;
 }

 public static void main(String[] args)
  throws InterruptedException{

  Thread backgroundThread = new Thread(new Runnable() {

   @Override
   public void run() {

    int i = 0;
    while(!stopRequested()){
     i++;
     System.out.println(i);
    }
   }
  });
  backgroundThread.start();
  TimeUnit.SECONDS.sleep(1);
  requestStop();
 }
}

這樣就實現了數據的同步,值得注意的是,寫方法(requestStop)和讀方法(stopRequested)都需要被同步,否則仍然不是真正意義上的同步。
另外,我們可以使用volatile這個變量修飾符來更加簡單地完成同步任務。
復制代碼 代碼如下:

import java.util.concurrent.TimeUnit;
public class StopThread {
 /**
  * @param args
  */

 private static volatile boolean stopRequested;

 public static void main(String[] args)
  throws InterruptedException{

  Thread backgroundThread = new Thread(new Runnable() {

   @Override
   public void run() {

    int i = 0;
    while(!stopRequested){
     i++;
     System.out.println(i);
    }
   }
  });
  backgroundThread.start();
  TimeUnit.SECONDS.sleep(1);
  stopRequested = true;
 }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级做一级爱a做片性 久久久资源网 | 国产亚洲自拍一区 | www69xxxxx| 成年人毛片视频 | 色屁屁xxxxⅹ在线视频 | 国产一区二区三区四区波多野结衣 | 毛片在线免费播放 | 91精品国产日韩91久久久久久360 | 国产精品成人一区二区三区电影毛片 | 欧美久久久一区二区三区 | 在线91视频 | 亚洲精品午夜在线 | 91精品视频免费 | 国产高潮好爽受不了了夜色 | 黄色99视频 | 亚洲精品欧美在线 | 日韩高清电影 | 久久精品艹| 日韩黄色免费在线观看 | 作爱在线观看 | 久久不射电影 | 日韩黄色一区 | 欧美xxxwww| 黄色的视频免费观看 | 亚洲网站免费观看 | 欧美日韩在线影院 | 91羞羞 | 91 视频网站 | 欧美一级美国一级 | 日美黄色片 | 暴力强行进如hdxxx | 精品国产观看 | 欧美无限资源 | 国产视频在线观看一区二区三区 | 日本aaaa片毛片免费观看视频 | 视屏一区 | 看免费黄色大片 | 免费在线中文字幕 | 高清中文字幕在线 | 亚洲成人福利网站 | 国产xxxxx在线观看 |