gpt4 book ai didi

java - 我想读取实时日志文件,并想搜索我在运行时创建的某些特定关键字

转载 作者:行者123 更新时间:2023-12-01 18:12:16 26 4
gpt4 key购买 nike

我对“线程”很陌生,不知道如何使用它。我确实曾经为每个测试用例创建一个新线程,并且这些线程从未终止。单个关键字搜索对我来说也工作得很好,但是当我每次为新线程创建新关键字时,事情就会变得困惑。

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
}

}

最佳答案

首先,线程用于执行代码,同时运行其他代码。就像你说一个人应该从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() .

<小时/>

一些讲座

What is a "thread" (really)?

Java read a logfile live

How to properly stop the Thread in Java?

Threads in Java

What does 'synchronized' mean?

What is the volatile keyword useful for

Avoid Deadlock example

关于java - 我想读取实时日志文件,并想搜索我在运行时创建的某些特定关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60446580/

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