Java 我想读一个实时日志文件,并想搜索一些特定的关键字,我在运行时
我对“线程”很陌生,不知道如何使用它。 我确实为每个测试用例创建了一个新线程,这些线程从未终止。 单关键字搜索对我来说也很好,但当我每次为一个新线程创建一个新关键字时,事情就会变得一团糟 Junit测试:Java 我想读一个实时日志文件,并想搜索一些特定的关键字,我在运行时,java,multithreading,Java,Multithreading,我对“线程”很陌生,不知道如何使用它。 我确实为每个测试用例创建了一个新线程,这些线程从未终止。 单关键字搜索对我来说也很好,但当我每次为一个新线程创建一个新关键字时,事情就会变得一团糟 Junit测试: public class Test{ @Test public static void someTest() { SSH ssh = new SSH(); // test logic String key = "some_v
public class Test{
@Test
public static void someTest() {
SSH ssh = new SSH();
// test logic
String key = "some_value from test logic";
ssh.start(key);
}
}
SSH
线程:
public class SSH extends Thread {
String key = "";
public void run {
ssh(key);
}
public SSH(String key) {
this.key = key;
}
public static void ssh(String key) {
// some logic
}
}
首先,一个
线程
用于执行代码,而其他代码将在其上运行。这就像你说一个人应该从0数到100,另一个人应该说ABC。如果没有线程,这是不可能的
读取实时日志文件是一个可以通过线程解决的问题 使用如下所示的线程:
public class SSHThread extends Thread {
private String key;
private volatile boolean endFlag;
public SSHThread(String key) {
this.key = key;
}
// stops thread from executing
public void stop() {
endFlag = true;
}
@Override
public void run() {
// pre logic
while (true) { // runs infinitely
if (endFlag) {
break;
// could also be 'return;' if there is no 'post logic'
}
ssh(key);
}
// post logic
}
}
此线程将一直运行,直到程序停止,因此最好在退出程序之前调用stop()
。这条线可以做你需要的任何事情
如果需要,可以将endFlag
设置为true
或在ssh()中调用stop()
一些讲座