這篇文章主要為大家展示了“Java多線程窗口售票的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Java多線程窗口售票的示例分析”這篇文章吧。
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的克山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
具體代碼如下:
第一種:
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í)候,電腦突然卡了起來,我趕緊把eclipse關(guān)了。
以上是“Java多線程窗口售票的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!