国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Runnable,Thread實現多線程以及Runnable的同步資源共享

2019-11-14 15:38:30
字體:
來源:轉載
供稿:網友

(一)

     實現多線程有兩種方式

    (1)

     繼承Thread類,重寫run()方法,如以下例子

     class MyThread extends Thread{

         public void run(){

         //

         }

     }

   class Main{

        public void main(String[] args){

        MyThread thread=new Mythread();

        thread.start();

        }

    }

    (2)

    利用runnable接口實現,但是若只是定義了Runnable對象,如

public class Myobject{	public static void main(String[] args)	{		//System.out.

  Runnable對象必須依賴一個Thread類才能真正意義上說是另外開辟了一個線程,不然是默認在主線程中的,在Android更新UI有這種應用,利用runOnUiThread(runnable)來在主線程的某一塊調用Runnable的run方法,此時并沒有開辟另外的線程,而是在主線程中執行的,這一點應該分清楚。

真正意義上的開辟另外的線程看下面,需要Thread.start()來調用Runnable接口的run方法    

    class MyThread implements Runnable{

         public void run(){

         //

         }

     }

   class Main{

       public static void main(String[] args){

       MyThread thread=new MyThread();//實例化runnable對象

       Thread thread1=new Thread(thread);//通過Thread實例化runnable對象

       thread1.start();//利用Thread線程類啟動Runnable接口的run方法

       }

   }

(二)在利用Runnable進行多線程時,則有時候需要資源共享

當分配一個任務給多人時,假如要實現資源共享那么就用到

synchronized (this){

同步代碼塊

}

那我們就舉個買票的例子

定義個ThreadTicket類

  此時的實現MyThread接口類

  由MyThread類可以得出此時的購票總數是10張票,分三個窗口買,那么此時就需要三個窗口共享票源,當沒票時就不再進行售票

當不添加synchronized關鍵字時,此時顯示的結果為

可以看到此時的結果是雜亂無章,完全沒有達到資源共享

此時應該利用synchronized(this)

{

//code

}

同步代碼塊來實現資源共享

 

就是將MyThread的synchronized部分注釋解除,此時的結果為

成功實現了資源共享的目的。

Runnable的很大的優點就在于資源共享。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保山市| 杨浦区| 蓝山县| 光山县| 夏津县| 石狮市| 周口市| 苍山县| 阜平县| 临海市| 石台县| 梁河县| 南木林县| 政和县| 达尔| 吉林市| 香港 | 西丰县| 大洼县| 丹阳市| 炉霍县| 漳浦县| 栾川县| 澎湖县| 舞阳县| 成安县| 隆安县| 屯门区| 新野县| 元氏县| 吴忠市| 阜南县| 安康市| 安阳市| 土默特左旗| 济源市| 易门县| 田阳县| 隆化县| 虎林市| 正镶白旗|