gpt4 book ai didi

java - 将当前线程 hibernate 特定时间

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:10 24 4
gpt4 key购买 nike

我正在尝试编写小型多线程程序。我想通过多个线程在不同的帧时间运行相同的进程。

我创建了一个输入文件,其中对同一进程具有不同的名称,并且该进程应运行的毫秒数。

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具有不同的名称,这些名称来自文件,并且希望将当前正在运行的线程 hibernate 特定的时间段,该时间段也来自文件。

我得到了这个奇怪的输出

ProcessName: T
ProcessName: T
ProcessName: T
ProcessName: T
ProcessName: T

哪里错了以及如何实现?

谢谢

更新

似乎所有线程都同时完成。它应该在来自文件的毫秒内保持 Activity 状态。怎么了?

最佳答案

“|”是一个特殊字符,需要转义。将 String[]records = st.split("|"); 替换为 String[]records = st.split("[|]"); ,它将起作用。这里解释一下: https://javarevisited.blogspot.com/2017/01/how-to-split-string-based-on-delimiter-in-java.html

或者,您可以将其替换为 String[]records = st.split("\\|");

关于java - 将当前线程 hibernate 特定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60531724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com