线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。进程类实现了runnable接口但是操作线程的方法主要并不在runnable接口中而是在thread类之中。
实验报告(七)
实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
源代码
package 哎哎哎;
public class implements Runnable
{
private int ticket = 999; // 1000张票
public void run()
{
for (int i = 0; i < 1000; i++)
{
synchronized (this) // 同步
{
if (ticket >= 0)
{
if (ticket == 0)
{
System.out.println(Thread.currentThread().getName() + "已经买完了");
break;
}
else
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "成功卖出一张票,剩余的票数 : " + ticket--);
}
}
}
}
}
}
public class Train
{
public static void main(String args[])
{
my = new my();
Thread d1 = new Thread(my, "窗口one");
Thread d2 = new Thread(my, "窗口two");
Thread d3 = new Thread(my, "窗口three");
Thread d4 = new Thread(my, "窗口four");
Thread d5 = new Thread(my, "窗口five");
Thread d6 = new Thread(my, "窗口six");
Therad d7 = new Thread(my, "窗口seven");
Thread d8 = new Thread(my, "窗口eight");
Thread d9 = new Thread(my, "窗口nine");
Thread d0 = new Thread(my, "窗口ten");
d1.setPriority(Thread.MIN_PRIORITY); // 最高级别优先级
d2.setPriority(Thread.MAX_PRIORITY); // 中间级别优先级
d3.setPriority(Thread.NORM_PRIORITY); // 最低级别优先级
d1.start();
d2.start();
d3.start();
d4.start();
d5.start();
d6.start();
d7.start();
d8.start();
d9.start();
d0.start();
}
}
原文:https://www.cnblogs.com/zc00/p/11740915.html