一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java線(xiàn)程代碼的實(shí)現(xiàn)方法

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

2020-12-17 13:49yanwenxiong Java教程

下面小編就為大家?guī)?lái)一篇Java線(xiàn)程代碼的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

1.繼承Thread

聲明Thread的子類(lèi)

?
1
2
3
4
5
public class MyThread extends Thread {
 public void run(){
  System.out.println("MyThread running");
 }
}

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

?
1
2
MyThread myThread = new MyThread();
myTread.start();

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

?
1
2
3
4
5
6
Thread thread = new Thread(){
 public void run(){
  System.out.println("Thread Running");
 }
};
thread.start();

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

聲明

?
1
2
3
4
5
6
public class MyThread implements Runnable {
@override
public void run() {
 System.out.println("MyThread is running");
}
}

運(yùn)行

?
1
2
Thread thread = new Thread(new MyRunnable());
thread.start();

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

?
1
2
3
4
5
6
new Thread(new Runnable(){
 @override
 public void run() {
  System.out.println("Thread is running");
 }
}).start();

5.線(xiàn)程名字

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

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

二、線(xiàn)程安全性

1.定義

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


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

2.線(xiàn)程類(lèi)不安全的實(shí)例

1.首先定義Count類(lèi),有私有成員count=0;

?
1
2
3
4
5
6
7
8
9
10
11
public class Count {
 private long count = 0;
 
 public long getCount() {
  return count;
 }
 
 public void service() {
  count++;
 }
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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í)行的情況:線(xiàn)程2在線(xiàn)程1沒(méi)有完成count自增的情況下就讀取了count,導(dǎo)致最后count沒(méi)有達(dá)到20000。

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

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

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

原文鏈接:http://www.cnblogs.com/yanwenxiong/archive/2017/08/16/7376313.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本花季传媒2020旧版安卓 | 操碰91| 色老板在线观看 | 亚洲欧美日韩在线观看看另类 | 99re在线视频免费观看 | 美女被的视频 | jazz中国在线视频 | 青涩体验在线观看未删减 | 人人做人人爽人人爱 | 毛片免费网站 | 久久理论片 | 好男人资源免费观看 | 四虎官网| 亚洲精品国产在线观看 | 国产精品高清视亚洲一区二区 | 亚洲AV无码专区国产精品麻豆 | 大胆私拍模特国模377 | 精品国产成人AV在线看 | 日韩欧美亚洲一区精选 | 拔插拔插8x8x海外华人免费视频 | 国产午夜精品久久理论片 | 国产精品久久久久久五月尺 | 欧美日韩一区二区综合在线视频 | 亚洲不卡视频在线观看 | 国产精品俺来也在线观看了 | 亚洲欧美另类综合 | 精品综合 | 超级毛片| 亚洲码在线观看 | 好爽视频 | 美女禁区视频无遮挡免费看 | 日日操日日舔 | 99久久99久久免费精品蜜桃 | 国产a一级| 俄罗斯美女大逼 | 99九九成人免费视频精品 | 久久草香蕉频线观 | 日韩免费视频播放 | 青青艹视频在线 | 亚洲美女人黄网成人女 | 国产精品福利短视在线播放频 |