62,621
社区成员
发帖
与我相关
我的任务
分享
public class ImplementsRunnable implements Runnable {
private int ticketNums = 10;
private boolean flag = true;
@Override
public void run() {
while(flag){
//买票
try {
buy();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public synchronized void buy() throws InterruptedException {
if(ticketNums <= 0){
flag = false;
return ;
}
//睡10秒
Thread.sleep(10000);
System.out.println(Thread.currentThread().getName() + "拿到了第" + ticketNums-- + "票");
}
public static void main(String[] args) {
ImplementsRunnable implementsRunnable = new ImplementsRunnable();
Thread thread = new Thread(implementsRunnable, "小二");
Thread thread1 = new Thread(implementsRunnable, "小三");
Thread thread2 = new Thread(implementsRunnable, "小四");
Thread thread3 = new Thread(implementsRunnable, "小五");
thread.start();
thread1.start();
thread2.start();
thread3.start();
//打印线程状态
while(true){
if((thread.getState() == Thread.State.TERMINATED) ||
(thread1.getState() == Thread.State.TERMINATED) ||
(thread2.getState() == Thread.State.TERMINATED) ||
(thread3.getState() == Thread.State.TERMINATED)
){
break;
}
System.out.println("thread = " + thread.getState());
System.out.println("thread1 = " + thread1.getState());
System.out.println("thread2 = " + thread2.getState());
System.out.println("thread3 = " + thread3.getState());
System.out.println("------------------------------------");
//一次打印 等待10秒
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

public class ImplementsRunnable implements Runnable {
private int ticketNums = 10;
private boolean flag = true;
@Override
public void run() {
while(flag){
//买票
try {
buy();
//睡10秒
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public synchronized void buy() {
if(ticketNums <= 0){
flag = false;
return ;
}
System.out.println(Thread.currentThread().getName() + "拿到了第" + ticketNums-- + "票");
}
public static void main(String[] args) {
ImplementsRunnable implementsRunnable = new ImplementsRunnable();
Thread thread = new Thread(implementsRunnable, "小二");
Thread thread1 = new Thread(implementsRunnable, "小三");
Thread thread2 = new Thread(implementsRunnable, "小四");
Thread thread3 = new Thread(implementsRunnable, "小五");
thread.start();
thread1.start();
thread2.start();
thread3.start();
//打印线程状态
while(true){
if((thread.getState() == Thread.State.TERMINATED) ||
(thread1.getState() == Thread.State.TERMINATED) ||
(thread2.getState() == Thread.State.TERMINATED) ||
(thread3.getState() == Thread.State.TERMINATED)
){
break;
}
System.out.println(thread.getName() + "线程 = " + thread.getState());
System.out.println(thread1.getName() + "线程 = " + thread1.getState());
System.out.println(thread2.getName() + "线程 = " + thread2.getState());
System.out.println(thread3.getName() + "线程 = " + thread3.getState());
System.out.println("------------------------------------");
//一次打印 等待10秒
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
