public class Checker implements Runnable {
@Override
public void run() {
String s = "hello everyone this is the clipboard program";
ClipBoard clipBoard = new ClipBoard();
Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
String result = null;
try {
result = (String) clipboard.getData(DataFlavor.stringFlavor);
result= clipBoard.changeTheText(result);
} catch (UnsupportedFlavorException e) {
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("String from Clipboard:" + result);
}
}
我知道它可能只是一个简单的线程使用,但我不确定它是如何工作的。 我想用线程每秒检查剪贴板,看看用户是否已更改。现在我可以打印我的剪贴板一次
答案 0 :(得分:3)
ScheduledExecutorService应该在这里诀窍
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Checker(), 1, 1, SECONDS);
这将在延迟1秒后运行Checker
,之后每秒运行一次。
答案 1 :(得分:0)
您的Checker
课程为Runnable
,因此您可以通过以下方式在Thread
中进行操作:
public static void main(String[] args) {
Checker checker = new Checker();
Thread thread = new Thread(checker);
thread.start();
}
但是,这只会执行一次run()
方法。如果你想定期执行它,你应该按照这样的结构重写它:
@Override
public void run() {
try {
while(true) {
// ... your code here
Thread.sleep(1000); // this will pause the thread for 1 second
}
} catch(InterruptedException e) {
}
}
现在你的代码在一个无限循环中,它将每秒执行一次。如果您想停止它,请拨打thread.interrupt()
。