某网站的全部用户信息都保存在user.txt文件中。每个用户占一行,第1列为用户名,第2列为密码,第3列之后为其他信息。各列之间用空格/tab键隔开。
编写一个程序,启动3个读取线程和1个验证线程。每个读取线程通过交互方式从控制台读取用户名和密码。读取用户名后打印线程某正读取用户某,
然后使线程休眠1000毫秒;读取密码后同样打印线程某正在读取密码某,也使线程均休眠1000毫秒。每个读取线程完成读取后进入等待状态,
等待验证线程验证用户登录信息是否正确。验证线程在有读取线程完成读取时读取user.txt文件,检验用户名和密码是否正确并给出反馈信息。
要求所有读取线程均未完成读取时验证线程处于等待状态。
public class test02 {
public static void main(String[] args) {
MyThread1 task=new MyThread1();
new Thread(task,"验证线程1").start();
new Thread(task,"验证线程2").start();
new Thread(task,"验证线程3").start();
}
}
class MyThread1 implements Runnable{
Object lock=new Object();
@Override
public void run() {
while(true) {
synchronized (lock) {
Reader reader;
try {
reader = new FileReader("E:\user.txt");
BufferedReader bufferedReader=new BufferedReader(reader);
String line;
while((line=bufferedReader.readLine())!=null) {
String[]strings=line.split(" ");
System.out.println(Thread.currentThread().getName()+"正在读取用户"+strings[0]);
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName()+"正在读取密码"+strings[1]);
Thread.sleep(1000);
continue;
}
} catch (Exception e) {
e.printStackTrace();
}
}
break;
}
}
}
这是我的一段代码,虽然还没完成,但是测试了一下,做不到要求的3个线程同时交替读取,麻烦有没有人能指点迷津