上一篇文章讲了使用IO流以及容器来实现模拟签到的过程,这篇使用多线程来实现。
签到可以分为两个线程,一个是签到人数的,一个是控制时间的
import java.util.ArrayList;
import java.util.Scanner;
public class SignIn implements Runnable{
static int time=0; //设置公共资源,签到时间
public static void main(String[] args) {
new Thread(new SignIn()).start(); //开启另一个线程,开始计时
ArrayList<String> al=new ArrayList<>();
Scanner sc=new Scanner(System.in);
int num=5; //签到人数
while(time<5) {
if(num==0) { //最多只能签5个人
break;
}
System.out.println("请签到:");
al.add(sc.next()); //记录姓名
num--;
}
if(time==5) {
System.out.println("签到时间结束");
}
System.out.println("已签到的有:"+al);
System.out.println("班长是否签到:"+al.contains("班长"));
}
@Override
public void run() {
for(time=0;time<5;time++) {
try {
Thread.sleep(2000); //控制时间,休眠时间*循环次数
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
时间结束的:
人数签完的: