Java 使用线程每秒检查剪贴板

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

我知道这可能只是线程的简单使用,但我不确定它是如何工作的。 我希望ta每秒用一个线程检查剪贴板,看看用户是否更改了它。现在我可以只打印一次我的剪贴板了

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秒后每隔一秒运行一次。

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
线程
库?