欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年03月23日 11:05:58   作者:Francis-Yu  
這篇文章主要為大家詳細(xì)介紹了Java多線程如何實(shí)現(xiàn)Runnable方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

(一)步驟

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

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

3.通過(guò)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方法。

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

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

如何找問(wèn)題:

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

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

3.明確多線程運(yùn)行代碼中哪些語(yǔ)句是操作共享數(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è)類中定義要處理的問(wèn)題,方法。

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論