最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線程代碼的實(shí)現(xiàn)方法

 更新時(shí)間:2017年08月17日 08:26:19   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇Java線程代碼的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一、線程Java代碼實(shí)現(xiàn)

1.繼承Thread

聲明Thread的子類

public class MyThread extends Thread {
 public void run(){
  System.out.println("MyThread running");
 }
}

運(yùn)行thread子類的方法

MyThread myThread = new MyThread();
myTread.start();

2.創(chuàng)建Thread的匿名子類

Thread thread = new Thread(){
 public void run(){
  System.out.println("Thread Running");
 }
};
thread.start();

3.實(shí)現(xiàn)Runnable接口

聲明

public class MyThread implements Runnable {
@override
public void run() {
 System.out.println("MyThread is running");
}
}

運(yùn)行

Thread thread = new Thread(new MyRunnable());
thread.start();

4.創(chuàng)建實(shí)現(xiàn)Runnable接口的匿名類

new Thread(new Runnable(){
 @override
 public void run() {
  System.out.println("Thread is running");
 }
}).start();

5.線程名字

創(chuàng)建時(shí)候可以給線程起名字

Thread thread = new Thread(new MyRunnable(),"name");?獲得名字
Thread thread = new Thread(new MyRunnable(),"name");
System.out.println(thraed.getName());?獲取運(yùn)行當(dāng)期代碼線程的名字
Thread.currentThread().getName();

二、線程安全性

1.定義

線程會(huì)共享進(jìn)程范圍內(nèi)的資源,同時(shí),每個(gè)線程也會(huì)有各自的程序計(jì)數(shù)器,棧,以及局部變量。在多個(gè)線程不完全同步的情況下,多個(gè)線程執(zhí)行的順序是不可預(yù)測(cè)的,那么不同的執(zhí)行順序就可能帶來(lái)極其糟糕的結(jié)果。


如何定義一個(gè)類是線程安全的呢?最核心的問(wèn)題在于正確性,在代碼中無(wú)需進(jìn)行額外的同步或者協(xié)同操作的情況下,無(wú)論有多少個(gè)線程使用這個(gè)類,無(wú)論環(huán)境以何種方式調(diào)度多線程,這個(gè)類總能表現(xiàn)出正確的行為,我們就成這個(gè)類是線程安全的。

2.線程類不安全的實(shí)例

1.首先定義Count類,有私有成員count=0;

public class Count {
 private long count = 0;
 
 public long getCount() {
  return count;
 }
 
 public void service() {
  count++;
 }
}

2.然后在線程中去調(diào)用這個(gè)類的service方法

final Count count = new Count();
for (int i = 0; i < 20000; i++) {
 Thread thread3 = new Thread(){
  @Override
  public void run() {
   count.service();
   if (count.getCount() == 20000) {
    System.out.println("ahha");
   }
  }
 };
 thread3.start();
}

3.結(jié)果程序卻沒(méi)有輸出,說(shuō)明最后count并沒(méi)有達(dá)到20000,為什么呢?

因?yàn)榇嬖谥韵洛e(cuò)誤執(zhí)行的情況:線程2在線程1沒(méi)有完成count自增的情況下就讀取了count,導(dǎo)致最后count沒(méi)有達(dá)到20000。

4.并發(fā)編程中,這種由于不恰當(dāng)?shù)膱?zhí)行順序而顯示了不正確結(jié)果的情況叫做Race Condition(競(jìng)爭(zhēng)狀態(tài)),這種情況出現(xiàn)的根本原因是count的自增沒(méi)有保持原子性。count自增分三步操作,而不是一步到位。

以上這篇Java線程代碼的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java多線程編程必備volatile與synchronized深入理解

    java多線程編程必備volatile與synchronized深入理解

    這篇文章主要介紹了java多線程編程必備volatile與synchronized的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • java面試題——詳解HashMap和Hashtable 的區(qū)別

    java面試題——詳解HashMap和Hashtable 的區(qū)別

    本篇文章主要介紹了java中HashMap和Hashtable的區(qū)別,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-11-11
  • Java中2個(gè)Integer比較相同的四種方式舉例

    Java中2個(gè)Integer比較相同的四種方式舉例

    這篇文章主要介紹了Java中比較兩個(gè)Integer對(duì)象的四種方式,并解釋了每種方式的原理和適用范圍,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • java之Timer和TimerTask簡(jiǎn)單demo(分享)

    java之Timer和TimerTask簡(jiǎn)單demo(分享)

    下面小編就為大家?guī)?lái)一篇java之Timer和TimerTask簡(jiǎn)單demo(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Spring中的@Autowired注解深入解析與實(shí)戰(zhàn)指南

    Spring中的@Autowired注解深入解析與實(shí)戰(zhàn)指南

    本文介紹了Spring框架中的@Autowired注解,詳細(xì)講解了其基本用法、高級(jí)用法以及實(shí)際應(yīng)用場(chǎng)景,通過(guò)@Autowired注解,Spring容器可以自動(dòng)將依賴的Bean注入到目標(biāo)Bean中,從而簡(jiǎn)化代碼并提高可維護(hù)性,需要的朋友可以參考下
    2024-11-11
  • Spring的事務(wù)管理你了解嗎

    Spring的事務(wù)管理你了解嗎

    這篇文章主要為大家介紹了Spring的事務(wù)管理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Maven之遠(yuǎn)程倉(cāng)庫(kù)的配置詳解

    Maven之遠(yuǎn)程倉(cāng)庫(kù)的配置詳解

    這篇文章主要介紹了Maven之遠(yuǎn)程倉(cāng)庫(kù)的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用Gradle打依賴包失敗的問(wèn)題及解決

    使用Gradle打依賴包失敗的問(wèn)題及解決

    這篇文章主要介紹了使用Gradle打依賴包失敗的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java 輕松實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)

    Java 輕松實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)

    在某些應(yīng)用場(chǎng)景中需要大量的二維數(shù)組來(lái)進(jìn)行數(shù)據(jù)存儲(chǔ),但是二維數(shù)組中卻有著大量的無(wú)用的位置占據(jù)著內(nèi)存空間,稀疏數(shù)組就是為了優(yōu)化二維數(shù)組,節(jié)省內(nèi)存空間
    2022-04-04
  • SpringSecurity頁(yè)面授權(quán)與登錄驗(yàn)證實(shí)現(xiàn)(內(nèi)存取值與數(shù)據(jù)庫(kù)取值)

    SpringSecurity頁(yè)面授權(quán)與登錄驗(yàn)證實(shí)現(xiàn)(內(nèi)存取值與數(shù)據(jù)庫(kù)取值)

    Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架,本文主要介紹了SpringSecurity頁(yè)面授權(quán)與登錄驗(yàn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

五原县| 三门县| 石泉县| 个旧市| 安福县| 鸡东县| 额尔古纳市| 德昌县| 额济纳旗| 若尔盖县| 舒城县| 石屏县| 梧州市| 平昌县| 商都县| 乌鲁木齐市| 军事| 固始县| 晋江市| 綦江县| 株洲县| 武隆县| 永泰县| 麻阳| 通道| 荔波县| 龙胜| 钟山县| 盐津县| 泗洪县| 荆州市| 临沂市| 苗栗县| 巴青县| 桐梓县| 鹤山市| 城口县| 凌源市| 古丈县| 西乡县| 札达县|