java實現(xiàn)Runnable接口適合資源的共享
本文為大家分享了java實現(xiàn)Runnable接口適合資源的共享,供大家參考,具體內(nèi)容如下
Java當(dāng)中,創(chuàng)建線程通常用兩種方式:
1、繼承Thread類
2、實現(xiàn)Runnable接口
但是在通常的開發(fā)當(dāng)中,一般會選擇實現(xiàn)Runnable接口,原因有二:
1.避免單繼承的局限,在Java當(dāng)中一個類可以實現(xiàn)多個接口,但只能繼承一個類
2.適合資源的共享
原因1我們經(jīng)常聽到,但是2是什么呢?下面用一個例子來解釋:
有5張票,分兩個窗口賣:
繼承Thread類:
public class ThreadDemo {
public static void main(String[] args) {
HelloThread t1 = new HelloThread();
t1.setName("一號窗口");
t1.start();
HelloThread t2 = new HelloThread();
t2.setName("二號窗口");
t2.start();
}
}
class HelloThread extends Thread{
private int ticket = 5;
public void run() {
while(true){
System.out.println(this.getName()+(ticket--));
if (ticket<1) {
break;
}
}
}
}
運行結(jié)果:

很明顯,這樣達不到我們想要的結(jié)果,這樣兩個窗口在同時賣票,互不干涉。
實現(xiàn)Thread類:
public class ThreadDemo {
public static void main(String[] args) {
HelloThread t = new HelloThread();
Thread thread1 = new Thread(t, "1號窗口");
thread1.start();
Thread thread2 = new Thread(t, "2號窗口");
thread2.start();
}
}
class HelloThread implements Runnable{
private int ticket = 5;
public void run() {
while(true){
System.out.println(Thread.currentThread().getName()+(ticket--));
if (ticket<1) {
break;
}
}
}
}
運行結(jié)果:

這樣兩個窗口就共享了5張票,因為只產(chǎn)生了一個HelloThread對象,一個對象里邊有一個屬性,這樣兩個線程同時在操作一個屬性,運行同一個run方法。
這樣就達到了資源的共享。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在springboot項目中同時接收文件和多個參數(shù)的方法總結(jié)
在開發(fā)接口中,遇到了需要同時接收文件和多個參數(shù)的情況,可以有多種方式實現(xiàn)文件和參數(shù)的同時接收,文中給大家介紹了兩種實現(xiàn)方法,感興趣的同學(xué)跟著小編一起來看看吧2023-08-08
基于FeignException$InternalServerError的解決方案
這篇文章主要介紹了FeignException$InternalServerError的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
解決Eclipse配置Tomcat出現(xiàn)Cannot create a server using the selected
這篇文章主要介紹了解決Eclipse配置Tomcat出現(xiàn)Cannot create a server using the selected type錯誤的相關(guān)資料,需要的朋友可以參考下2017-02-02
springboot?vue項目管理后端實現(xiàn)接口新增
這篇文章主要為大家介紹了springboot?vue項目管理后端實現(xiàn)接口新增,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05

