激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - Java線程代碼的實現方法

Java線程代碼的實現方法

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

下面小編就為大家帶來一篇Java線程代碼的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、線程Java代碼實現

1.繼承Thread

聲明Thread的子類

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

運行thread子類的方法

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

2.創建Thread的匿名子類

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

3.實現Runnable接口

聲明

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

運行

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

4.創建實現Runnable接口的匿名類

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

5.線程名字

創建時候可以給線程起名字

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

二、線程安全性

1.定義

線程會共享進程范圍內的資源,同時,每個線程也會有各自的程序計數器,棧,以及局部變量。在多個線程不完全同步的情況下,多個線程執行的順序是不可預測的,那么不同的執行順序就可能帶來極其糟糕的結果。


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

2.線程類不安全的實例

1.首先定義Count類,有私有成員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.然后在線程中去調用這個類的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.結果程序卻沒有輸出,說明最后count并沒有達到20000,為什么呢?

因為存在著以下錯誤執行的情況:線程2在線程1沒有完成count自增的情況下就讀取了count,導致最后count沒有達到20000。

Java線程代碼的實現方法

4.并發編程中,這種由于不恰當的執行順序而顯示了不正確結果的情況叫做Race Condition(競爭狀態),這種情況出現的根本原因是count的自增沒有保持原子性。count自增分三步操作,而不是一步到位。

以上這篇Java線程代碼的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
493
主站蜘蛛池模板: 国产精品手机在线亚洲 | www.com超碰| 亚洲一级簧片 | 国产精品一区二区手机在线观看 | 李宗瑞国产福利视频一区 | 日韩黄在线 | 国产艳妇av视国产精选av一区 | 欧美成人午夜 | 亚洲骚图 | 成人在线视频免费观看 | 欧美大胆xxxx肉体摄影 | av免费大全 | av在线免费不卡 | 毛片免费在线观看 | 日韩区在线 | 日韩视频一 | 视频一区 中文字幕 | 最新日本中文字幕在线观看 | 亚洲人成中文字幕在线观看 | 久久99久久98精品免观看软件 | 中国成人在线视频 | 久久综合综合 | 毛片电影在线看 | 一本视频在线观看 | 调教小男生抽打尿孔嗯啊视频 | 麻豆自拍偷拍视频 | 泰剧19禁啪啪无遮挡大尺度 | 中文字幕网在线 | 国产成人在线观看免费网站 | 91网站在线播放 | 久久精品一区二区三区不卡牛牛 | 成人毛片100部免费观看 | 亚洲第一色片 | 91久久久久久久久久久久久 | 国产成人强伦免费视频网站 | 国产精品成人免费一区久久羞羞 | 免费人成年短视频在线观看网站 | 日本aaaa片毛片免费观看视频 | av国产片 | 99精品国产小情侣高潮露脸在线 | 成人午夜精品 |