一、線程Java代碼實現(xiàn)
專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)湟源免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
1.繼承Thread
聲明Thread的子類
public class MyThread extends Thread { public void run(){ System.out.println("MyThread running"); } }
運行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.實現(xiàn)Runnable接口
聲明
public class MyThread implements Runnable { @override public void run() { System.out.println("MyThread is running"); } }
運行
Thread thread = new Thread(new MyRunnable()); thread.start();
4.創(chuàng)建實現(xiàn)Runnable接口的匿名類
new Thread(new Runnable(){ @override public void run() { System.out.println("Thread is running"); } }).start();
5.線程名字
創(chuàng)建時候可以給線程起名字
Thread thread = new Thread(new MyRunnable(),"name");?獲得名字 Thread thread = new Thread(new MyRunnable(),"name"); System.out.println(thraed.getName());?獲取運行當期代碼線程的名字 Thread.currentThread().getName();
二、線程安全性
1.定義
線程會共享進程范圍內(nèi)的資源,同時,每個線程也會有各自的程序計數(shù)器,棧,以及局部變量。在多個線程不完全同步的情況下,多個線程執(zhí)行的順序是不可預測的,那么不同的執(zhí)行順序就可能帶來極其糟糕的結(jié)果。
如何定義一個類是線程安全的呢?最核心的問題在于正確性,在代碼中無需進行額外的同步或者協(xié)同操作的情況下,無論有多少個線程使用這個類,無論環(huán)境以何種方式調(diào)度多線程,這個類總能表現(xiàn)出正確的行為,我們就成這個類是線程安全的。
2.線程類不安全的實例
1.首先定義Count類,有私有成員count=0;
public class Count { private long count = 0; public long getCount() { return count; } public void service() { count++; } }
2.然后在線程中去調(diào)用這個類的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é)果程序卻沒有輸出,說明最后count并沒有達到20000,為什么呢?
因為存在著以下錯誤執(zhí)行的情況:線程2在線程1沒有完成count自增的情況下就讀取了count,導致最后count沒有達到20000。
4.并發(fā)編程中,這種由于不恰當?shù)膱?zhí)行順序而顯示了不正確結(jié)果的情況叫做Race Condition(競爭狀態(tài)),這種情況出現(xiàn)的根本原因是count的自增沒有保持原子性。count自增分三步操作,而不是一步到位。
以上這篇Java線程代碼的實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。
本文名稱:Java線程代碼的實現(xiàn)方法
標題來源:http://www.muchs.cn/article44/jpcsee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、Google、建站公司、做網(wǎng)站、云服務(wù)器、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)