java - 线程 run() 中的条件检查失败

标签 java multithreading if-statement

public class MultiThreadExample extends Thread {
    public static int count=0;
    static String s="";
    synchronized public static String read(){
        String line="";
        System.out.println("Enter new line:");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        try {
            line=br.readLine();
            count++;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return line;

    }

    synchronized public static void write(String line){
        try {
            BufferedWriter br=new BufferedWriter(new FileWriter("C://name.txt"));
            br.write(line);
            System.out.println(line);
            br.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

    public void run(){
        if(count==0){
            System.out.println("Read " + s + " Count " + count);
            s=read();
            System.out.println("Read " + s + " Count " + count);
        }
        else{
            write(s);
            System.out.println("Write" + s + " Count " + count);
        }
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MultiThreadExample th1=new MultiThreadExample();
        MultiThreadExample th2=new MultiThreadExample();
        th1.start();
        th2.start();
    }

}

run() 方法中的计数检查不起作用。知道为什么吗?我可以看到,计数随着每次调用而增加,但是检查不起作用,并且每次控制都会传递给 read() 方法,并且不会转到 write()

我做错了什么?另外,是否有其他有效的方法可以根据情况从两个线程调用多个方法?

附注我正在尝试使用一个线程读取输入,并将输入值写入另一个线程中的文件

最佳答案

试试这个:

    MultiThreadExample th1=new MultiThreadExample();
    MultiThreadExample th2=new MultiThreadExample();
    th1.start();
   try {
    th1.join();
} catch (InterruptedException ex) {
    System.out.println(ex.getMessage());
}
    th2.start();

关于java - 线程 run() 中的条件检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313680/

相关文章:

java - 简单绘画程序 - 新线未被识别

java - Maven:使用系统中的jar文件进行编译

multithreading - 单线程内存屏障

没有正则表达式的 Piglatin 程序的 PHP 脚本——如何考虑以元音字母 "th"或 "sh"开头的单词?

mysql - if 语句语法错误触发

java - 在 Java 中使用自定义异常类型包装异常是否有优势

Java线程安全的数据库连接

javascript - 清理三元语句中的代码

使用 Lambda 语法的 C# 匿名线程

java - Swing:区分用户引起的组件大小调整和自动组件大小调整的问题(编写自定义布局管理器)