第一种:
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(); } } }第二种:
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--) + "张票"); } } } } } 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(); } }运行结果:
窗口二售出了第100张票窗口三售出了第99张票窗口三售出了第98张票窗口三售出了第97张票窗口一售出了第96张票窗口三售出了第95张票窗口二售出了第94张票窗口二售出了第93张票窗口二售出了第92张票窗口二售出了第91张票窗口二售出了第90张票窗口二售出了第89张票窗口二售出了第88张票窗口三售出了第87张票窗口一售出了第86张票窗口一售出了第85张票窗口一售出了第84张票窗口一售出了第83张票窗口一售出了第82张票窗口一售出了第81张票窗口一售出了第80张票窗口一售出了第79张票窗口一售出了第78张票窗口一售出了第77张票窗口三售出了第76张票窗口三售出了第75张票窗口三售出了第74张票窗口三售出了第73张票窗口二售出了第72张票窗口二售出了第71张票窗口二售出了第70张票窗口二售出了第69张票窗口三售出了第68张票窗口一售出了第67张票窗口一售出了第66张票窗口三售出了第65张票窗口三售出了第64张票窗口三售出了第63张票窗口二售出了第62张票窗口二售出了第61张票窗口二售出了第60张票窗口二售出了第59张票窗口二售出了第58张票窗口二售出了第57张票窗口三售出了第56张票窗口三售出了第55张票窗口一售出了第54张票窗口一售出了第53张票窗口一售出了第52张票窗口三售出了第51张票窗口三售出了第50张票窗口二售出了第49张票窗口二售出了第48张票窗口二售出了第47张票窗口二售出了第46张票窗口二售出了第45张票窗口二售出了第44张票窗口二售出了第43张票窗口三售出了第42张票窗口三售出了第41张票窗口一售出了第40张票窗口三售出了第39张票窗口二售出了第38张票窗口二售出了第37张票窗口二售出了第36张票窗口三售出了第35张票窗口三售出了第34张票窗口三售出了第33张票窗口三售出了第32张票窗口三售出了第31张票窗口一售出了第30张票窗口一售出了第29张票窗口三售出了第28张票窗口三售出了第27张票窗口二售出了第26张票窗口二售出了第25张票窗口二售出了第24张票窗口二售出了第23张票窗口二售出了第22张票窗口二售出了第21张票窗口三售出了第20张票窗口三售出了第19张票窗口三售出了第18张票窗口三售出了第17张票窗口一售出了第16张票窗口一售出了第15张票窗口一售出了第14张票窗口一售出了第13张票窗口一售出了第12张票窗口三售出了第11张票窗口三售出了第10张票窗口二售出了第9张票窗口二售出了第8张票窗口二售出了第7张票窗口三售出了第6张票窗口三售出了第5张票窗口一售出了第4张票窗口一售出了第3张票窗口三售出了第2张票窗口三售出了第1张票
转载于:https://www.cnblogs.com/neuhao/p/6485573.html
