java實現(xiàn)Runnable接口適合資源的共享
本文為大家分享了java實現(xiàn)Runnable接口適合資源的共享,供大家參考,具體內容如下
Java當中,創(chuàng)建線程通常用兩種方式:
1、繼承Thread類
2、實現(xiàn)Runnable接口
但是在通常的開發(fā)當中,一般會選擇實現(xiàn)Runnable接口,原因有二:
1.避免單繼承的局限,在Java當中一個類可以實現(xiàn)多個接口,但只能繼承一個類
2.適合資源的共享
原因1我們經常聽到,但是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; } } } }
運行結果:
很明顯,這樣達不到我們想要的結果,這樣兩個窗口在同時賣票,互不干涉。
實現(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; } } } }
運行結果:
這樣兩個窗口就共享了5張票,因為只產生了一個HelloThread對象,一個對象里邊有一個屬性,這樣兩個線程同時在操作一個屬性,運行同一個run方法。
這樣就達到了資源的共享。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
在springboot項目中同時接收文件和多個參數的方法總結
在開發(fā)接口中,遇到了需要同時接收文件和多個參數的情況,可以有多種方式實現(xiàn)文件和參數的同時接收,文中給大家介紹了兩種實現(xiàn)方法,感興趣的同學跟著小編一起來看看吧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錯誤的相關資料,需要的朋友可以參考下2017-02-02springboot?vue項目管理后端實現(xiàn)接口新增
這篇文章主要為大家介紹了springboot?vue項目管理后端實現(xiàn)接口新增,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05