第九周

实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
一、实验代码

package seven;

public class paper {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread mt=new MyThread();
        Thread t1=new Thread(mt,"A窗口");
        Thread t2=new Thread(mt,"B窗口");
        Thread t3=new Thread(mt,"C窗口");
        Thread t4=new Thread(mt,"D窗口");
        Thread t5=new Thread(mt,"E窗口");
        Thread t6=new Thread(mt,"F窗口");
        Thread t7=new Thread(mt,"H窗口");
        Thread t8=new Thread(mt,"I窗口");
        Thread t9=new Thread(mt,"J窗口");
        Thread t0=new Thread(mt,"K窗口");
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();
        t6.start();
        t7.start();
        t8.start();
        t9.start();
        t0.start();
    }
}

package seven;

public class MyThread  implements Runnable{
	private int ticket=100;
    public void run() {
        for(int i=0;i<25;i++) {
            synchronized(this) {
                if(ticket>0) {
                    try {
                        Thread.sleep(1000);
                    }catch(Exception e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()+"运行,ticket="+ticket--);
                }
            }
        }
    }

}

二、实验结果

三、总结
1、线程操作的一些主要方法
public Thread(Runnable target) :接收Runnable 接口子类对象,实例化Thread对象。
public Thread(Runnable target, Stirng name) :接收Runnable 接口子类对象,实例化Thread对象,并设置线程名称。
public Thread (String name):实例化Thread对象,并且设置线程名称
public static Thread currentThread():返回目前正在执行的线程
*public void start():开始执行线程

2、数据的同步syntronized
同步代码块:
synchronized(同步对象){
需要同步的代码;
}

同步方法:
synchronized 方法返回值 方法名称 (参数列表){
//方法体
}

原文地址:https://www.cnblogs.com/gaotian250yj912/p/11735823.html