我对"线程"很陌生,不知道如何使用它。我确实为每个测试用例创建了一个新的线程,这些线程从未终止。单关键字搜索对我来说也很好,但当我每次为一个新线程创建一个新关键字时,事情就会变得一团糟。
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 中的线程
什么是';已同步';意思是
易失性关键字对有用吗
避免死锁示例