真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談Java并發(fā)的底層實(shí)現(xiàn)-創(chuàng)新互聯(lián)

并發(fā)編程的目的是讓程序運(yùn)行更快,但是使用并發(fā)并不定會(huì)使得程序運(yùn)行更快,只有當(dāng)程序的并發(fā)數(shù)量達(dá)到一定的量級(jí)的時(shí)候才能體現(xiàn)并發(fā)編程的優(yōu)勢(shì)。所以談并發(fā)編程在高并發(fā)量的時(shí)候才有意義。雖然目前還沒(méi)有開(kāi)發(fā)過(guò)高并發(fā)量的程序,但是學(xué)習(xí)并發(fā)是為了更好理解一些分布式架構(gòu)。那么當(dāng)程序的并發(fā)量不高,比如是單線程的程序,單線程的執(zhí)行效率反而比多線程更高。這又是為什么呢?熟悉操作系統(tǒng)的應(yīng)該知道,CPU是通過(guò)給每個(gè)線程分配時(shí)間片的方式實(shí)現(xiàn)多線程的。這樣,當(dāng)CPU從一個(gè)任務(wù)切換到另一個(gè)任務(wù)的時(shí)候,會(huì)保存上一個(gè)任務(wù)的狀態(tài),當(dāng)執(zhí)行完這個(gè)任務(wù)的時(shí)候CPU就會(huì)繼續(xù)上一個(gè)任務(wù)的狀態(tài)繼續(xù)執(zhí)行。這個(gè)過(guò)程稱為上下文切換。

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、南陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為南陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

在Java多線程中,volatile關(guān)鍵字個(gè)synchronized關(guān)鍵字扮演了重要的角色,它們都可以實(shí)現(xiàn)線程的同步,但是在底層是如何實(shí)現(xiàn)的呢?

volatile

volatile只能保證變量對(duì)各個(gè)線程的可見(jiàn)性,但不能保證原子性。關(guān)于 Java語(yǔ)言 volatile 的使用方法就不多說(shuō)了,我的建議是 除了 配合package java.util.concurrent.atomic 中的類庫(kù),其他情況一概別用。更多的解釋 參見(jiàn) 這篇文章。


引子


參見(jiàn)如下代碼


 package org.go;

public class Go {

  volatile int i = 0;

  private void inc() {
    i++;
  }

  public static void main(String[] args) {
    Go go = new Go();
    for (int i = 0; i < 10; i++) {
      new Thread(() -> {
        for (int j = 0; j < 1000; j++)
          go.inc();
      }).start();
    }
    while(Thread.activeCount()>1){
      Thread.yield();
    }
    System.out.println(go.i);
  }
}
 

文章題目:淺談Java并發(fā)的底層實(shí)現(xiàn)-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/doeodd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部