实验8 多线程编程
实验要求:
(1) 掌握两种创建线程的方法;
(2) 掌握线程同步的方法。
实验内容:
(1) 编程模拟售票系统,模拟多个窗口(至少4个)同时出售100张车票的情况;用实现Runnable接口的方法实现多线程。
/**
* @author 张小桌桌
* 编程模拟售票系统,模拟多个窗口(至少4个)同时出售100张车票的情况;
* 用实现Runnable接口的方法实现多线程。
*/
package shiyan8;
public class EightA implements Runnable{
private int tickets = 100;
@Override
public void run() {
while (tickets>0){
synchronized (this){ //同步机制、加锁
if (tickets>0){
tickets--;
System.out.println(Thread.currentThread().getName()+" 剩余 "+tickets+" 张票!");
}
}
try { //模仿网络延迟
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
EightA sellTickets = new EightA();
Thread win1 = new Thread(sellTickets);
Thread win2 = new Thread(sellTickets);
Thread win3 = new Thread(sellTickets);
Thread win4 = new Thread(sellTickets);
win1.setName("窗口1");
win2.setName("窗口2");
win3.setName("窗口3");
win4.setName("窗口4");
win1.start();
win2.start();
win3.start();
win4.start();
}
}
运行结果:
(2) 利用多线程机制编写程序,输出一个问候语,要求每隔1秒钟输出一个字符。用2种方法分别创建线程。
例如:问候语=“welcome!”,运行结果可能有多种情况,如下表所示,分别说明原因及创建线程的方法。
-
(1)
-
(2)
-
(3)
-
(4)