【发布时间】:2020-03-04 17:36:33
【问题描述】:
我正在尝试编写小型多线程程序。我想通过多个线程在不同的帧时间运行相同的进程。
我创建了一个输入文件,其中我对同一个进程有不同的名称,并且该进程应该运行的毫秒数。
T1|1000
T2|2000
T3|3000
T4|4000
T5|5000
Java 程序
package Test;
import java.io.*;
public class MultiProcess {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("/home/maria/Process.txt"));
String st;
while ((st = br.readLine()) != null) {
String[] records = st.split("|");
Thread tr = new ProcessExecution(records[0], Integer.parseInt(records[1]));
tr.start();
}
br.close();
}
static class ProcessExecution extends Thread {
int threadTime = 0;
String processName;
ProcessExecution(String processName, int x) {
this.threadTime = x;
this.processName = processName;
}
@Override
public void run() {
try {
System.out.println("ProcessName: " + this.processName);
Thread.sleep(this.threadTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
在上面的代码中,ProcessExecution 有不同的名字,它们来自文件,并且想要让当前运行的线程休眠特定的时间段,这也是来自文件。
我得到了这个奇怪的输出
ProcessName: T
ProcessName: T
ProcessName: T
ProcessName: T
ProcessName: T
什么是错以及如何实现?
谢谢
更新
似乎所有线程都在同时完成。它应该保持活跃到来自文件的毫秒数。怎么了?
【问题讨论】:
标签: java multithreading