【发布时间】:2013-11-26 01:27:12
【问题描述】:
我的应用程序中有这样的代码,我想在后台运行:
import java.awt.*;
import java.awt.datatransfer.*;
class Main extends Thread implements ClipboardOwner {
private Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
public void run() {
Transferable trans = sysClip.getContents(this);
regainOwnership(trans);
System.out.println("Listening to board...");
while (true) { }
}
public static void main(String[] args) {
Main b = new Main();
b.start();
}
//............
它会监听Ctrl+C 并在按下此组合键后打印剪贴板的内容。但是,它使 CPU 始终运行 99%。如果我删除while (true) { },那么应用程序将在一秒钟内停止。
我尝试以java -jar myapp.jar & 启动它,但结果是一样的。我猜在 Windows 上也是如此,虽然我现在关心的是 Linux。
我该怎么办?
【问题讨论】:
-
尝试在 while 循环中添加 Thread.sleep(
)。 -
不要扩展线程。实现runnable更好
标签: java linux multithreading keyboard