国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java多線程實現Runnable方式

Java多線程實現Runnable方式

2021-04-14 11:45Francis-Yu Java教程

這篇文章主要為大家詳細介紹了Java多線程如何實現Runnable方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了Java多線程實現Runnable方式的具體方法,供大家參考,具體內容如下

(一)步驟

 1.定義實現Runnable接口

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

3.通過Thread類建立線程對象。

4.將Runnable接口的子類對象作為實際參數傳遞給Thread類的構造函數。

  為什么要講Runnable接口的子類對象傳遞給Thread的構造方法。因為自定義的方法的所屬的對象是Runnable接口的子類對象。

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

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

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

如何找問題:

1.明確哪些代碼是多線程運行代碼。

2.明確共享數據

3.明確多線程運行代碼中哪些語句是操作共享數據的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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放在修飾方法中。 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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();
   
   
  }
 
 
}

總結: 

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

2.在實現Runnable的類中重寫run方法中去調用已經定義的類中的要處理問題的方法。 
在synchronized塊中接受要處理問題那個類的對象。

3.在main方法中去定義多個線程去執行。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/VLTIC/article/details/7099740

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区二区三区免费观看 | 欧美精品在线一区二区三区 | 国产精品久久久久久久久久免费 | 国产精品亚洲综合 | 免费一区二区三区四区 | 日韩av片无码一区二区不卡电影 | 久久国产精品一区二区三区 | 国产一区二区视频免费看 | 欧美小电影| 欧美一区三区 | 荷兰欧美一级毛片 | 欧美日韩激情一区 | 精品一区二区三区视频 | 国产精品一区二区不卡 | 亚洲不卡| 免费在线成人 | 亚洲精品久久久一区二区三区 | 冷水浴在线观看 | 91精品国产乱码久久久久久 | 欧美一区免费 | 日韩精品在线播放 | 日韩一级视频 | 狠狠爱亚洲 | 亚洲第一成人在线视频 | 国产探花在线精品一区二区 | 免费视频成人国产精品网站 | 中文字幕亚洲欧美 | 亚洲一区二区在线播放 | 久久青| 亚洲国产aⅴ成人精品无吗 久久综合久久久 | 国产精品国产a级 | 欧美日韩一区二区视频在线观看 | 欧美韩日 | 日本不卡一区二区三区在线观看 | 成人高清在线 | 国产精品永久 | 黄色国产在线看 | 国产黄色大片 | 美足av | 国产99久久精品一区二区永久免费 | 91精品国产91久久综合桃花 |