亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解多線程及Runable 和Thread的區(qū)別

 更新時間:2019年04月08日 15:50:18   作者:qq_43499096  
這篇文章主要介紹了多線程及Runable 和Thread的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Thread和Runnable區(qū)別

執(zhí)行多線程操作可以選擇
繼承Thread類
實現(xiàn)Runnable接口

1.繼承Thread類

以賣票窗口舉例,一共5張票,由3個窗口進行售賣(3個線程)。
代碼:

package thread;
public class ThreadTest {
	public static void main(String[] args) {
		MyThreadTest mt1 = new MyThreadTest("窗口1");
		MyThreadTest mt2 = new MyThreadTest("窗口2");
		MyThreadTest mt3 = new MyThreadTest("窗口3");
		mt1.start();
		mt2.start();
		mt3.start();
	}
}
class MyThreadTest extends Thread{
	private int ticket = 5;  
	private String name;
	public MyThreadTest(String name){
		this.name = name;
	}
  public void run(){  
     while(true){ 
       if(ticket < 1){  
        break; 
       }  
       System.out.println(name + " = " + ticket--);  
     }  
  } 
}

執(zhí)行結(jié)果:
窗口1 = 5
窗口1 = 4
窗口1 = 3
窗口1 = 2
窗口1 = 1
窗口2 = 5
窗口3 = 5
窗口2 = 4
窗口3 = 4
窗口3 = 3
窗口3 = 2
窗口3 = 1
窗口2 = 3
窗口2 = 2
窗口2 = 1
結(jié)果一共賣出了5*3=15張票,這違背了"5張票"的初衷。
造成此現(xiàn)象的原因就是:

MyThreadTest mt1 = new MyThreadTest("窗口1");
	MyThreadTest mt2 = new MyThreadTest("窗口2");
	MyThreadTest mt3 = new MyThreadTest("窗口3");
	mt1.start();
	mt2.start();
	mt3.start();

一共創(chuàng)建了3個MyThreadTest對象,而這3個對象的資源不是共享的,即各自定義的ticket=5是不會共享的,因此3個線程都執(zhí)行了5次循環(huán)操作。

2.實現(xiàn)Runnable接口

同樣的例子,代碼:

package thread;
public class RunnableTest {
	public static void main(String[] args) {
		MyRunnableTest mt = new MyRunnableTest();
		Thread mt1 = new Thread(mt,"窗口1");
		Thread mt2 = new Thread(mt,"窗口2");
		Thread mt3 = new Thread(mt,"窗口3");
		mt1.start();
		mt2.start();
		mt3.start();
	}
}
class MyRunnableTest implements Runnable{
	private int ticket = 5;  
	public void run(){  
     while(true){ 
  		 if(ticket < 1){  
  			 break; 
  		 }  
  		 System.out.println(Thread.currentThread().getName() + " = " + ticket--);  
     }  
  } 
}

結(jié)果:

窗口1 = 5
窗口1 = 2
窗口3 = 4
窗口2 = 3
窗口1 = 1

結(jié)果賣出了預期的5張票。
原因在于:

MyRunnableTest mt = new MyRunnableTest();
Thread mt1 = new Thread(mt,"窗口1");
Thread mt2 = new Thread(mt,"窗口2");
Thread mt3 = new Thread(mt,"窗口3");
mt1.start();
mt2.start();
mt3.start();

只創(chuàng)建了一個MyRunnableTest對象,而3個Thread線程都以同一個MyRunnableTest來啟動,所以他們的資源是共享的。

以上所述是小編給大家介紹的多線程及Runable 和Thread的區(qū)別詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java人機猜拳實現(xiàn)的思路及方法實例

    Java人機猜拳實現(xiàn)的思路及方法實例

    這篇文章主要給大家介紹了關(guān)于Java人機猜拳實現(xiàn)的思路及方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Java中6種單例模式寫法代碼實例

    Java中6種單例模式寫法代碼實例

    這篇文章主要介紹了Java中6種單例模式寫法代碼實例,某個類任何情況下只有一個實例,并提供一個全局訪問點來獲取該實例,Java6種單例模式有2種懶漢式,2種餓漢式,靜態(tài)內(nèi)部類 ,枚舉類,需要的朋友可以參考下
    2024-01-01
  • SpringBoot前后端分離項目之打包、部署到服務器詳細圖文流程

    SpringBoot前后端分離項目之打包、部署到服務器詳細圖文流程

    作為后臺開發(fā),項目打包部署是經(jīng)常性的操作,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端分離項目之打包、部署到服務器的相關(guān)資料,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • spring解決循環(huán)依賴

    spring解決循環(huán)依賴

    這篇文章主要介紹了spring如何解決循環(huán)依賴,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-09-09
  • IDEA使用學生郵箱無法注冊問題:JetBrains Account connection error: 拒絕連接

    IDEA使用學生郵箱無法注冊問題:JetBrains Account connection error: 拒絕連接

    這篇文章主要介紹了IDEA使用學生郵箱無法注冊問題:JetBrains Account connection error: 拒絕連接,文中通過圖文及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • java 兩個數(shù)組合并的幾種方法

    java 兩個數(shù)組合并的幾種方法

    本篇文章主要介紹了java 兩個數(shù)組合并的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • @SpringBootTest 注解報紅問題及解決

    @SpringBootTest 注解報紅問題及解決

    這篇文章主要介紹了@SpringBootTest 注解報紅問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 詳解Java兩種方式簡單實現(xiàn):爬取網(wǎng)頁并且保存

    詳解Java兩種方式簡單實現(xiàn):爬取網(wǎng)頁并且保存

    本篇文章主要介紹了Java兩種方式簡單實現(xiàn):爬取網(wǎng)頁并且保存 ,主要用UrlConnection、HttpClient爬取實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • 使用spring-data-redis中的Redis事務

    使用spring-data-redis中的Redis事務

    這篇文章主要介紹了使用spring-data-redis中的Redis事務,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java實現(xiàn)2048小游戲(含注釋)

    java實現(xiàn)2048小游戲(含注釋)

    這篇文章主要為大家介紹了java實現(xiàn)2048小游戲,含詳細注釋,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評論