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

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

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

Thread和Runnable區(qū)別

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

1.繼承Thread類

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

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個(gè)MyThreadTest對(duì)象,而這3個(gè)對(duì)象的資源不是共享的,即各自定義的ticket=5是不會(huì)共享的,因此3個(gè)線程都執(zhí)行了5次循環(huán)操作。

2.實(shí)現(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é)果賣出了預(yù)期的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)建了一個(gè)MyRunnableTest對(duì)象,而3個(gè)Thread線程都以同一個(gè)MyRunnableTest來(lái)啟動(dòng),所以他們的資源是共享的。

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

相關(guān)文章

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

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

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

    Java中6種單例模式寫(xiě)法代碼實(shí)例

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

    SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器詳細(xì)圖文流程

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

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

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

    IDEA使用學(xué)生郵箱無(wú)法注冊(cè)問(wèn)題:JetBrains Account connection error: 拒絕連接

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

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

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

    @SpringBootTest 注解報(bào)紅問(wèn)題及解決

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

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

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

    使用spring-data-redis中的Redis事務(wù)

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

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

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

最新評(píng)論