题目要求:
开设四个窗口,同时购买100张票,直到一百张票买完为止
思路分析:
1.目前我们学过的同时对一个数据进行操作的,就只有线程
创建线程有两种方式:实现Runnable接口/继承Thread类,本题中就用实现接口的方法
2.创建一个类实现Runnable接口
3.定义一个静态变量记录总的票数,属于该类的所有对象
4.因为想用同步代码块,所以创建一个对象,作为锁对象,注意的是,要使用同一个锁对象,不然解决不了线程安全问题
5.重写run方法,里边用循环实现买票,注意将要同步的代码块,加上同步锁
6.在测试类里边创建实现Runnable接口的对象
7.创建线程对象,将实现RUnnable接口的对象作为参数传进去,顺便给线程起个名字
8.启动线程;
public class MyRunnable implements Runnable {
//定义总票数
private static int num = 100;
//定义锁对象
private static Object lock = new Object();
//重写run方法
public void run() {
while (num <= 100) {
synchronized (lock) {
if (num <0) {
return;
}
System.out.println(Thread.currentThread().getName() + "销售了一张,还剩余" + num);
num--;