java實(shí)現(xiàn)多線程賣票功能
java多線程賣票直接先看個(gè)例子:
public class SelTicketsMainTest {
public static void main(String[] args) {
SaleTickets1 saleTickets = new SaleTickets1();
for(int t=1;t<=3;t++) {
new Thread(saleTickets).start();
}
}
}
class SaleTickets1 implements Runnable{
private int ticketCount = 10;// 總的票數(shù),這個(gè)是共享資源,多個(gè)線程都會(huì)訪問
public void run()
{
while (true)// 循環(huán)是指線程不停的去賣票
{
synchronized (this)// 當(dāng)操作的是共享數(shù)據(jù)時(shí),
// 用同步代碼塊進(jìn)行包圍起來,執(zhí)行里面的代碼需要mutex的鎖,但是mutex只有一個(gè)鎖。這樣在執(zhí)行時(shí),只能有一個(gè)線程執(zhí)行同步代碼塊里面的內(nèi)容
{
if(ticketCount>0) {
ticketCount--;
System.out.println(Thread.currentThread().getName()
+ "正在賣票,還剩" + ticketCount + "張票");
}
}
/**
* 在同步代碼塊里面睡覺,和不睡效果是一樣 的,作用只是自已不執(zhí)行,也不讓線程執(zhí)行。sleep不釋放鎖,抱著鎖睡覺。其他線程拿不到鎖,也不能執(zhí)行同步代碼。wait()可以釋放鎖
* 所以把睡覺放到同步代碼塊的外面,這樣賣完一張票就睡一會(huì),讓其他線程再賣,這樣所有的線程都可以賣票
*/
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
這是賣票的經(jīng)典案例,在這做個(gè)記錄。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Spring Boot中使用swagger-bootstrap-ui的方法
這篇文章主要介紹了在Spring Boot中使用swagger-bootstrap-ui的方法,需要的朋友可以參考下2018-01-01
springboot+mysql+mybatis實(shí)現(xiàn)控制臺(tái)打印sql
在Spring Boot中使用MyBatis與MySQL,并希望在控制臺(tái)打印SQL語句,可以通過配置MyBatis的日志級(jí)別來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Java 中 getClass() 方法的使用與原理深入分析(對(duì)象類型信息)
在 Java 編程中,getClass() 是一個(gè)非常重要的方法,它用于獲取對(duì)象的運(yùn)行時(shí)類信息,無論是調(diào)試代碼、反射操作,還是類型檢查,getClass() 都扮演著關(guān)鍵角色,本文將深入探討 getClass() 的使用方法、底層原理以及實(shí)際應(yīng)用場(chǎng)景,感興趣的朋友一起看看吧2024-12-12
SpringBoot中實(shí)現(xiàn)加載遠(yuǎn)程配置的代碼示例
本文章將通過結(jié)合consul config來講解在springboot中如何加載遠(yuǎn)程配置:通過consul config加載consul server中存儲(chǔ)的配置,需要的朋友可以參考下2023-06-06
使用Java實(shí)現(xiàn)將ppt轉(zhuǎn)換為文本
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)將ppt轉(zhuǎn)換為文本,文中的示例代碼簡潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-01-01
java中Hutool工具類的常見使用場(chǎng)景詳解
在日常開發(fā)中,我們會(huì)使用很多工具類來提升項(xiàng)目開發(fā)的速度,而國內(nèi)用的比較多的 Hutool 框架,就是其中之一,本文我們就來介紹一下Hutool的具體使用吧2023-12-12
SpringCloud微服務(wù)之Hystrix組件實(shí)現(xiàn)服務(wù)熔斷的方法
微服務(wù)架構(gòu)特點(diǎn)就是多服務(wù),多數(shù)據(jù)源,支撐系統(tǒng)應(yīng)用。這樣導(dǎo)致微服務(wù)之間存在依賴關(guān)系。這篇文章主要介紹了SpringCloud微服務(wù)之Hystrix組件實(shí)現(xiàn)服務(wù)熔斷的方法,需要的朋友可以參考下2019-08-08

