56 2022-05-11 21:35 采纳率: 0%
浏览 28

Java编程, 某网站的全部用户信息都保存在user.txt文件中。

某网站的全部用户信息都保存在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个线程同时交替读取,麻烦有没有人能指点迷津

  • 写回答

1条回答 默认 最新

  • Juwell16 2022-05-12 14:44
    关注

    这写的啥呀,每个线程都要去读取同一个文件,每个线程执行的都是一样的流程,怎么能做到交替执行呢
    用户名和密码可以在一个线程中获取,验证可以用另一个线程来验证,没必要交替进行,你的交替进行就是一个单线程操作,何必创建线程呢

    评论

报告相同问题?

问题事件

  • 修改了问题 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 关于#游戏策划#的问题:当浏览器输入兑换码,疯狂点击领取按钮,邮箱马上到账几十个兑换码礼包
  • ¥15 虚拟机打不开,怎么解决
  • ¥15 为什么游戏兑换码能被重复领取
  • ¥30 (急!)java实现二叉链表构建二叉树,实现相关功能
  • ¥15 C#tekloa节点插件小项
  • ¥20 脑电信号的局部场电位分析
  • ¥30 Diodes 霍尔开关AH337已经obselete,他的升级替代料【不改变现有电路图】
  • ¥15 python爬虫IndexError: list index out of range
  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统