加入同步代码块解决线程安全问题--不熟练
package com.bjpowernode.t15;
/**
 * 电影票
*/
public class Ticket implements Runnable {
	// 电影票总数
	private int num = 100;
	private int maoyan;
	
	@Override
	public void run() {
		while (true) {
			// 加入同步代码块解决线程安全问题
			synchronized (this) {
				// 当电影票售罄后,跳出循环不再执行
				if (num <= 0) {
					break;
				} else {
					if ("猫眼电影".equals(Thread.currentThread().getName())) {
						maoyan++;
					}
					// 表示卖出了一张票
					num--;
					System.out.println(Thread.currentThread().getName() + "卖出了一张,剩余:" + num);
				}
			}
		}
		if ("猫眼电影".equals(Thread.currentThread().getName())) {
			System.out.println("猫眼电影卖了" + maoyan + "张");
		}
		
	}
}
-------------------------
package com.bjpowernode.t15;
public class Test {
 public static void main(String[] args) {
		//创建电影票的对象
		Ticket ticket = new Ticket();
		
		//创建三个公司(线程)售卖电影票
		Thread t1 = new Thread(ticket,"猫眼电影");
		Thread t2 = new Thread(ticket,"糯米电影");
		Thread t3 = new Thread(ticket,"美团电影");
		t1.start();
		t2.start();
		t3.start();
	}
}
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号