亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java多線程-實例解析

2019-11-06 06:55:58
字體:
來源:轉載
供稿:網友

java多線程實例 3種實現方法Java中的多線程有三種實現方式:1.繼承Thread類,重寫run方法。Thread本質上也是一個實現了Runnable的實例,他代表一個線程的實例,并且啟動線程的唯一方法就是通過Thread類的start方法。2.實現Runnable接口,并實現該接口的run()方法.創建一個Thread對象,用實現的Runnable接口的對象作為參數實例化Thread對象,調用此對象的start方法。3.實現Callable接口,重寫call方法。Callable接口與Runnable接口的功能類似,但提供了比Runnable更強大的功能。有以下三點1).Callable可以在人物結束后提供一個返回值,Runnable沒有提供這個功能。2).Callable中的call方法可以拋出異常,而Runnable的run方法不能拋出異常。3).運行Callable可以拿到一個Future對象,表示異步計算的結果,提供了檢查計算是否完成的方法。需要注意的是,無論用那種方式實現了多線程,調用start方法并不意味著立即執行多線程代碼,而是使得線程變為可運行狀態。run start的區別start方法是啟動一個線程,而線程中的run方法來完成實際的操作。如果開發人員直接調用run方法,那么就會將這個方法當作一個普通函數來調用,并沒有多開辟線程,開發人員如果希望多線程異步執行,則需要調用start方法。sleep wait的區別1.兩者處理的機制不同,sleep方法主要是,讓線程暫停執行一段時間,時間一到自動恢復,并不會釋放所占用的鎖,當調用wait方法以后,他會釋放所占用的對象鎖,等待其他線程調用notify方法才會再次醒來。2.sleep是Threa的靜態方法,是用來控制線程自身流程的,而wait是object的方法,用于進行線程通信。3.兩者使用的區域不同。sleep可以在任何地方使用,wait必須放在同步控制方法,或者語句塊中執行。synchronized notify wait的運用synchronized關鍵字有兩種用法,synchronized方法和synchronized語句塊。public synchronized void function(){}synchronized(object){}當某個資源被synchronized所修飾,線程1線程2等多個線程在共同請求這個資源,線程1先請求到,調用了對象的wait方法釋放了對象的鎖,此時線程2可以對這個對象進行訪問,在工作結束時可以調用對象的notify方法,喚醒等待隊列中正在等待的線程,此時被喚醒的線程將會再一次拿到對象鎖,對對象進行操作??梢哉{用notifyAll方法,喚醒等待隊列中的所有線程。需要注意的是一個線程被喚醒不代表立即獲取對象鎖,必須等調用的線程對象的方法推出synchronized塊釋放對象鎖后,被喚醒的進程才會獲得對象鎖。

以下為大家提供一個簡單的代碼實例:

分別用Runnable和Thread方法實現,展示各個方法的

實現Runnable實現多線程的方法

復制代碼
public class TestRunnable implements Runnable {    PRivate int time=1;    private SourceA s;    private String id = "001";    public TestRunnable(SourceA s){        this.s = s;    }    public void setTime(int time) {        this.time = time;    }        @Override    public void run() {        try {            System.out.println("i will sleep"+ time);            Thread.sleep(time);        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        synchronized(s){            s.notify();            System.out.println("我喚醒了002!");            System.out.println("我存入了id"+id);            s.setSource(id);        }    }}復制代碼

 

繼承Thread實現多線程的方法

復制代碼
public class TestThread extends Thread {    private int time = 1;    private SourceA s = null;    String id = "002";        public void setTime(int time) {        this.time = time;    }        public TestThread(SourceA s){        this.s = s ;    }        @Override    public void run() {        try {            System.out.println("i will sleep"+ time);            sleep(time);        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }                synchronized(s){            try {                System.out.println("我"+ id +"要進行等待了");                s.wait();            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            System.out.println("我被喚醒了");            System.out.println("我存入了id"+id);            s.setSource(id);        }    }}復制代碼

 

SourceA類代碼:

復制代碼
public class SourceA {    private List<String> list = new ArrayList<String>();    public synchronized void getSource(){        for(int i=0;i<list.size();i++){            System.out.println(list.get(i));        }    }    public synchronized void setSource(String id){        list.add(id);    }}復制代碼

 

Test測試類代碼:

復制代碼
public void test(){        SourceA s = new SourceA();        TestThread tt = new TestThread(s);        TestRunnable tr = new TestRunnable(s);        Thread t = new Thread(tr);        System.out.println("調用線程1");        tt.start();        System.out.println("調用線程2");        t.start();    }復制代碼

 

結果圖片:

原文地址:http://www.cnblogs.com/yfsmooth/p/4652206.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人精品一区二区| 欧美专区第一页| 午夜精品视频网站| 亚洲热线99精品视频| 亚洲奶大毛多的老太婆| 亚洲天堂第一页| 亚洲人午夜精品免费| 97久久精品人人澡人人爽缅北| 亚洲最大中文字幕| 91av在线国产| 午夜精品www| 美女少妇精品视频| 成人免费网站在线观看| 亚洲精品久久久久| 欧美高清电影在线看| 久久免费少妇高潮久久精品99| 色狠狠久久aa北条麻妃| 国产午夜精品全部视频在线播放| 成人有码视频在线播放| 性色av一区二区三区在线观看| 色偷偷av一区二区三区乱| 欧亚精品在线观看| 91免费高清视频| 久久久久久69| 亚洲最大激情中文字幕| 亚洲最大av网站| 欧美有码在线观看| 成人在线小视频| 亚洲国产成人久久综合一区| 色中色综合影院手机版在线观看| 成人国产精品一区| 精品国产美女在线| 亚洲999一在线观看www| 亚洲人精品午夜在线观看| 久久夜色精品国产欧美乱| 色综合久久88色综合天天看泰| 国产精品欧美亚洲777777| 欧美与欧洲交xxxx免费观看| 久久精品免费播放| 久久久久这里只有精品| 欧美香蕉大胸在线视频观看| 欧美资源在线观看| 91精品国产网站| 欧美激情手机在线视频| 欧美激情精品久久久久久免费印度| 久久精品国产成人精品| 国产精品aaa| 国产精品青草久久久久福利99| 欧美激情综合亚洲一二区| 91国内产香蕉| 国产成人一区二区三区小说| 成人黄色av免费在线观看| 亚洲福利视频二区| 欧美乱妇高清无乱码| 亚洲欧美第一页| 亚洲天堂网站在线观看视频| 国产成人在线精品| 久久久噜噜噜久久中文字免| 亚洲国产欧美自拍| 九九九热精品免费视频观看网站| 日韩精品极品毛片系列视频| 亚洲国产精品电影| 久久免费在线观看| 国产精品一区二区性色av| 久久伊人精品天天| 91中文字幕在线观看| 亚洲精品久久7777777| 亚洲激情视频网站| 日韩中文字幕网址| 亚洲电影中文字幕| 国产日韩精品在线观看| 欧美午夜精品久久久久久浪潮| 久久电影一区二区| 日韩大片免费观看视频播放| 亚洲第五色综合网| 亚洲一区免费网站| 欧美日韩精品在线播放| 一本大道香蕉久在线播放29| 国产精品草莓在线免费观看| 51ⅴ精品国产91久久久久久| 国产欧美一区二区三区视频| 欧美乱大交xxxxx| 欧美巨乳美女视频| 亚洲欧洲一区二区三区在线观看| 欧美午夜丰满在线18影院| 日韩福利在线播放| 欧美日韩一区免费| 国产啪精品视频| 亚洲人成网站色ww在线| 91免费国产视频| 欧美午夜精品久久久久久人妖| www亚洲精品| 欧美性少妇18aaaa视频| 欧美大尺度电影在线观看| 精品国产精品三级精品av网址| 欧美自拍大量在线观看| 国产精品美女免费| 永久免费精品影视网站| 亚洲在线视频福利| 91av在线播放视频| 欧美成人精品h版在线观看| 亚洲日本成人网| 欧美激情亚洲一区| 亚洲欧美日本精品| 欧美极品少妇xxxxx| 在线播放精品一区二区三区| 欧美激情在线观看| 亚洲国产精品久久久久| 国产91在线视频| 在线观看国产欧美| 久久频这里精品99香蕉| 伊人亚洲福利一区二区三区| 中文字幕在线日韩| 91亚洲国产成人精品性色| 在线播放日韩精品| 欧美成人激情在线| 亚洲精品国精品久久99热| 欧美一区亚洲一区| 麻豆成人在线看| 日本国产精品视频| 91久久精品美女| 自拍偷拍亚洲在线| 欧美日韩日本国产| 北条麻妃久久精品| 日本一区二三区好的精华液| 欧美肥臀大乳一区二区免费视频| 国产99久久精品一区二区永久免费| 国产精品成人一区| 欧美孕妇与黑人孕交| 欧美亚洲国产视频小说| 国产精品成人在线| 伊人青青综合网站| 91亚洲精品视频| 国产精品日日摸夜夜添夜夜av| 国产一区二区久久精品| 久久视频精品在线| 国产剧情久久久久久| 久久九九国产精品怡红院| 波霸ol色综合久久| 91成人免费观看网站| 日本不卡免费高清视频| 亚洲第一二三四五区| 欧美日韩国产成人在线| 久久久电影免费观看完整版| 亚洲欧美三级在线| 欧美另类极品videosbest最新版本| 成人性生交xxxxx网站| 98视频在线噜噜噜国产| 国产精品久久久久9999| 亚洲一区二区三区777| 欧美日韩在线第一页| 日韩中文字幕视频在线观看| 日韩av在线看| 清纯唯美日韩制服另类| 亚洲a级在线播放观看| 亚洲欧美日韩国产中文专区| 中文字幕精品—区二区| 久久躁日日躁aaaaxxxx| 国外日韩电影在线观看| 亚洲丁香久久久| 国产精品视频26uuu| 欧美激情成人在线视频| 欧美激情免费看| 亚洲一区二区少妇|