Java 使用线程每秒检查剪贴板
我知道这可能只是线程的简单使用,但我不确定它是如何工作的。 我希望ta每秒用一个线程检查剪贴板,看看用户是否更改了它。现在我可以只打印一次我的剪贴板了A应该在这里完成这个任务Java 使用线程每秒检查剪贴板,java,multithreading,clipboard,Java,Multithreading,Clipboard,我知道这可能只是线程的简单使用,但我不确定它是如何工作的。 我希望ta每秒用一个线程检查剪贴板,看看用户是否更改了它。现在我可以只打印一次我的剪贴板了A应该在这里完成这个任务 public class Checker implements Runnable { @Override public void run() { String s = "hello everyone this is the clipboard program"; ClipBo
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);
}
}
这将在延迟1秒后运行您的检查器
,并在延迟1秒后每隔一秒运行一次。a应在此处执行此操作
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);
}
}
这将在延迟1秒后运行
检查器
,并在延迟1秒后每隔一秒运行一次。您的检查器
类是一个可运行的
,因此您可以通过执行以下操作在线程
中运行它:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Checker(), 1, 1, SECONDS);
但是,这将只执行一次run()
方法。如果要定期执行,应按照如下结构重写:
public static void main(String[] args) {
Checker checker = new Checker();
Thread thread = new Thread(checker);
thread.start();
}
现在,您的代码位于一个无限循环中,它将每秒执行一次。如果要停止它,只需调用
thread.interrupt()
您的Checker
类是一个Runnable
,因此您可以通过执行以下操作在线程中运行它:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Checker(), 1, 1, SECONDS);
但是,这将只执行一次run()
方法。如果要定期执行,应按照如下结构重写:
public static void main(String[] args) {
Checker checker = new Checker();
Thread thread = new Thread(checker);
thread.start();
}
现在,您的代码位于一个无限循环中,它将每秒执行一次。如果您想停止它,只需调用thread.interrupt()
使用计划执行器服务。您想知道线程通常是如何工作的吗?或者您正在询问如何使用Java线程
库?请使用计划执行器服务。您想知道线程通常是如何工作的吗?或者您正在询问如何使用Java线程库?