Java多線程窗口售票問(wèn)題實(shí)例
本文介紹了多線程實(shí)現(xiàn)多個(gè)窗口售票問(wèn)題的兩種枷鎖方式, 分別是synchronized 和lock()和unlock()
具體代碼如下:
第一種:
package Runnable;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/*
* 同步
* 這里有兩種方式加鎖
* 分別是
* 1.synchronized
* 2.lock()和unlock()
*/
public class MyRunnable implements Runnable {
private int tickets = 100;
// 定義鎖
private Lock lock = new ReentrantLock();
public void run() {
while (true) {
// 加鎖
lock.lock();
if (tickets > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "售出了第" + (tickets--) + "張票");
}
lock.unlock();
}
}
}
結(jié)果:

第二種:
package Runnable;
/*
* 同步
* 這里有兩種方式加鎖
* 分別是
* 1.synchronized
* 2.lock()和unlock()
*/
public class MyRunnable implements Runnable {
private int tickets = 100;
public void run() {
while (true) {
synchronized (this) {
if (tickets > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "售出了第" + (tickets--) + "張票");
}
}
}
}
}
結(jié)果:

package Runnable;
public class RunnableDemo {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread t1 = new Thread(myRunnable, "窗口一");
Thread t2 = new Thread(myRunnable, "窗口二");
Thread t3 = new Thread(myRunnable, "窗口三");
t1.start();
t2.start();
t3.start();
}
}
不知道是巧合還是怎么回事,運(yùn)行這兩個(gè)多線程小實(shí)例的時(shí)候,電腦突然卡了起來(lái),我趕緊把eclipse關(guān)了。
有關(guān)于結(jié)束進(jìn)程的語(yǔ)句并沒有添加,自行參閱吧。
以上就是本文關(guān)于Java多線程窗口售票問(wèn)題實(shí)例的全部?jī)?nèi)容,希望對(duì)打擊有所幫助。如有問(wèn)題可以隨時(shí)留言,期待您的寶貴意見。
相關(guān)文章
關(guān)于Spring?Cache?緩存攔截器(?CacheInterceptor)
這篇文章主要介紹了關(guān)于Spring?Cache緩存攔截器(?CacheInterceptor),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
mybatis?對(duì)于生成的sql語(yǔ)句?自動(dòng)加上單引號(hào)的情況詳解
這篇文章主要介紹了mybatis?對(duì)于生成的sql語(yǔ)句?自動(dòng)加上單引號(hào)的情況詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
fastjson全局日期序列化設(shè)置導(dǎo)致JSONField失效問(wèn)題解決方案
這篇文章主要介紹了fastjson通過(guò)代碼指定全局序列化返回時(shí)間格式,導(dǎo)致使用JSONField注解標(biāo)注屬性的特殊日期返回格式失效問(wèn)題的解決方案2023-01-01

