使用线程每秒检查剪贴板
using Threads to check the clipboard each second
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);
}
}
我知道这可能只是线程的简单使用,但我不确定它是如何工作的。
我想每秒用一个 Thread 检查剪贴板,看看它是否已被用户更改。现在我可以打印一次我的剪贴板
ScheduledExecutorService 应该可以解决这个问题
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Checker(), 1, 1, SECONDS);
这将 运行 你的 Checker
延迟 1 秒后,之后每秒。
你的 Checker
class 是一个 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()
.
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);
}
}
我知道这可能只是线程的简单使用,但我不确定它是如何工作的。 我想每秒用一个 Thread 检查剪贴板,看看它是否已被用户更改。现在我可以打印一次我的剪贴板
ScheduledExecutorService 应该可以解决这个问题
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Checker(), 1, 1, SECONDS);
这将 运行 你的 Checker
延迟 1 秒后,之后每秒。
你的 Checker
class 是一个 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()
.