前面讲解了关于多线程的使用方法,这篇文章则是进行实战,做几道测试题。
感兴趣的情况下可以看一下Java多线程
多线程练习1 (卖电影票)
一共有1000张电影票,可以在两个窗口领取,假设每次领取的时间为3000毫秒要求:请用多线程模拟卖票过程并打印剩余电影票的数量
线程代码:
package Exercise.Exam1;
public class Mythread extends Thread{
static int count = 1;
@Override
public void run() {
while (true){
synchronized (Mythread.class){
if (count<=1000){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getName()+"正在卖第"+count+"张票");
count++;
}else
break;
}
}
}
}
测试类:
package Exercise.Exam1;
public class Test {
public static void main(String[] args) {
Mythread mythread1 = new Mythread();
Mythread mythread2 = new Mythread();
mythread1.setName("窗口一");
mythread2.setName("窗口二");
mythread1.start();
mythread2.start();
}
}
运行结果:
多线程练习2 (送礼品)
有100份礼品,两人同时发送,当剩下的礼品小于10份的时候则不再送出。
利用多线程模拟该过程并将线程的名字和礼物的剩余数量打印出来.
线程代码:
package Exercise.Exam2;
public class MyThread extends Thread{
public MyThread(String name) {
super(name);
}
static int count =1;
@Override
public void run() {
while (true) {
synchronized (MyThread.class){
if(count==91){
break;
}
else {
System.out.println(getName()+"送出的第"+count+"份礼物");
int sum