我想阅读一个实时日志文件,并想搜索一些我在运行时创建的特定关键字



我对"线程"很陌生,不知道如何使用它。我确实为每个测试用例创建了一个新的线程,这些线程从未终止。单关键字搜索对我来说也很好,但当我每次为一个新线程创建一个新关键字时,事情就会变得一团糟。

Junit测试:

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
}
}

首先,Thread用于执行代码,而其他代码将继续运行。这就像你说一个人应该从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()


一些讲座

什么是";线程";(真的(?

Java读取日志文件实时

如何在Java中正确地停止线程?

Java 中的线程

什么是';已同步';意思是

易失性关键字对有用吗

避免死锁示例

最新更新