Java線程中賣火車票問題的深入講解
用Java代碼模擬賣100張火車票問題:四個售票窗口同時售票且不能賣出同一張火車票。
代碼如下。
package lesson; public class Demo1 { public static void main(String[] args) { // TODO Auto-generated method stub Train tt = new Train(); Thread t1 = new Thread(tt); Thread t2 = new Thread(tt); Thread t3 = new Thread(tt); Thread t4 = new Thread(tt); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t4.setName("窗口4"); t1.start(); t2.start(); t3.start(); t4.start(); } } class Train implements Runnable{ int a= 1; @Override public synchronized void run() {//synchronized為進程上鎖 // TODO Auto-generated method stub while(true) { if(a<=100) { System.out.println(Thread.currentThread().getName()+"賣出"+a+"號票"); a++; } try { this.wait(230); // Thread.sleep(100);//結(jié)果輸出只有窗口1賣了所有票如圖2所示 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
wait()正常運行結(jié)果圖1:
sleep()運行結(jié)果如圖2所示:
兩種結(jié)果不同的主要主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。
總結(jié)
到此這篇關(guān)于Java線程中賣火車票問題的深入講解的文章就介紹到這了,更多相關(guān)Java線程賣火車票問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot如何實現(xiàn)持久化登錄狀態(tài)獲取
這篇文章主要介紹了SpringBoot 如何實現(xiàn)持久化登錄狀態(tài)獲取,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Android開發(fā)中實現(xiàn)用戶注冊和登陸的代碼實例分享
這篇文章主要介紹了Android開發(fā)中實現(xiàn)用戶注冊和登陸的代碼實例分享,只是實現(xiàn)基本功能,界面華麗度就請忽略啦XD 需要的朋友可以參考下2015-12-12SpringCloud災(zāi)難性雪崩效應(yīng)處理方法之降級實現(xiàn)流程詳解
這篇文章主要介紹了SpringCloud災(zāi)難性雪崩效應(yīng)處理方法之降級,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧<BR>2022-11-11java 二進制數(shù)據(jù)與16進制字符串相互轉(zhuǎn)化方法
今天小編就為大家分享一篇java 二進制數(shù)據(jù)與16進制字符串相互轉(zhuǎn)化方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07在SpringBoot項目中如何實現(xiàn)線程池的動態(tài)監(jiān)控
Spring Boot因其簡便、高效的特點廣受開發(fā)者喜愛,在復(fù)雜的業(yè)務(wù)場景下,如何確保Spring Boot應(yīng)用的高性能和穩(wěn)定性成為了一個關(guān)鍵問題,其中,線程池的管理策略直接影響到系統(tǒng)的吞吐量和資源利用效率,本文將重點探討在Spring Boot項目中,如何實現(xiàn)線程池的動態(tài)監(jiān)控2023-10-10Java的Hibernate框架中的組合映射學(xué)習(xí)教程
組合映射即是指主對象和子對象關(guān)聯(lián)且擁有相同的生命周期的映射關(guān)系,這里我們將舉一些數(shù)據(jù)操作的實例,來講解Java的Hibernate框架中的組合映射學(xué)習(xí)教程2016-07-07Mybatis邏輯分頁與物理分頁PageHelper使用解析
這篇文章主要為大家介紹了Mybatis邏輯分頁與物理分頁PageHelper使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12SpringBoot整合RocketMQ實現(xiàn)消息發(fā)送和接收的詳細步驟
這篇文章主要介紹了SpringBoot整合RocketMQ實現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來講解,使用方便快捷,本文分步驟給大家介紹的非常詳細,需要的朋友可以參考下2021-08-08Java將字符串轉(zhuǎn)化為數(shù)組的兩種方法
Java中的String類是一種特殊的字符串,它可以被用于處理字符串,Java中的String類也可以將字符串轉(zhuǎn)換為數(shù)組,下面這篇文章主要給大家介紹了關(guān)于Java將字符串轉(zhuǎn)化為數(shù)組的兩種方法,需要的朋友可以參考下2023-05-05