У меня есть такой код в моем приложении, которое я хочу работать в фоновом режиме:класс наследуется от Thread делает CPU пробег 100%
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
и печатает содержимое буфера обмена, как только эта комбинация клавиш нажат. Тем не менее, он все время работает на 99%. Если я удалю while (true) { }
, приложение просто остановится через секунду.
Я попытался запустить его как java -jar myapp.jar &
, но результат был тот же. И это было бы так же на Windows, я думаю, хотя сейчас я забочусь о Linux.
Что мне делать?
Попробуйте добавить Thread.sleep () внутри цикла. –
не удлините нить. лучше всего реализовать runnable –
@PhilippSander, почему? –