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

首頁 > 開發(fā) > Java > 正文

Java多線程實(shí)現(xiàn)Runnable方式

2024-07-14 08:40:07
字體:
供稿:網(wǎng)友

本文為大家分享了Java多線程實(shí)現(xiàn)Runnable方式的具體方法,供大家參考,具體內(nèi)容如下

(一)步驟

 1.定義實(shí)現(xiàn)Runnable接口

 2.覆蓋Runnable接口中的run方法,將線程要運(yùn)行的代碼存放在run方法中。

3.通過Thread類建立線程對(duì)象。

4.將Runnable接口的子類對(duì)象作為實(shí)際參數(shù)傳遞給Thread類的構(gòu)造函數(shù)。

  為什么要講Runnable接口的子類對(duì)象傳遞給Thread的構(gòu)造方法。因?yàn)樽远x的方法的所屬的對(duì)象是Runnable接口的子類對(duì)象。

5.調(diào)用Thread類的start方法開啟線程并調(diào)用Runnable接口子類run方法。

(二)線程安全的共享代碼塊問題

目的:程序是否存在安全問題,如果有,如何解決?

如何找問題:

1.明確哪些代碼是多線程運(yùn)行代碼。

2.明確共享數(shù)據(jù)

3.明確多線程運(yùn)行代碼中哪些語句是操作共享數(shù)據(jù)的。

class Bank{    private int sum;   public void add(int n){         sum+=n;      System.out.println("sum="+sum);      }  }  class Cus implements Runnable{    private Bank b=new Bank();   public void run(){    synchronized(b){        for(int x=0;x<3;x++)      {       b.add(100);            }    }   }  } public class BankDemo{   public static void main(String []args){     Cus c=new Cus();     Thread t1=new Thread(c);     Thread t2=new Thread(c);     t1.start();     t2.start();         }   }

或者第二種方式,將同步代碼synchronized放在修飾方法中。 

class Bank{    private int sum;   public synchronized void add(int n){     Object obj=new Object();            sum+=n;      try{        Thread.sleep(10);      }catch(Exception e){       e.printStackTrace();      }      System.out.println("sum="+sum);        }  }  class Cus implements Runnable{    private Bank b=new Bank();   public void run(){           for(int x=0;x<3;x++)      {       b.add(100);            }       }  } public class BankDemo{   public static void main(String []args){     Cus c=new Cus();     Thread t1=new Thread(c);     Thread t2=new Thread(c);     t1.start();     t2.start();         }   } 

總結(jié): 

1.在一個(gè)類中定義要處理的問題,方法。

2.在實(shí)現(xiàn)Runnable的類中重寫run方法中去調(diào)用已經(jīng)定義的類中的要處理問題的方法。 
在synchronized塊中接受要處理問題那個(gè)類的對(duì)象。

3.在main方法中去定義多個(gè)線程去執(zhí)行。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宣汉县| 苏州市| 玉环县| 武邑县| 远安县| 四子王旗| 侯马市| 澄迈县| 敖汉旗| 南阳市| 若尔盖县| 南宫市| 河南省| 乐都县| 绩溪县| 罗定市| 常熟市| 泾源县| 宜城市| 页游| 东至县| 宁安市| 台江县| 安新县| 姜堰市| 那坡县| 阿图什市| 宁武县| 河北区| 新绛县| 文化| 乌拉特后旗| 渝中区| 蕉岭县| 河源市| 科技| 通州市| 泗水县| 延吉市| 射洪县| 额敏县|