如何实现自己的高效OS侦听器?

时间:2019-01-24 19:45:34

标签: java multithreading listener

如何创建自己的监听器,以Java高效地监听操作系统?例如,像Swing中的ActionListener一样,它会对按钮的点击做出反应。

我想制作一个记录用户剪贴板的程序,但是我不想使用这样的循环:

while (flag)
{
      Transferable t = Toolkit.getDefaultToolkit()
            .getSystemClipboard()
            .getContents(null);

      if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor))
        {
            try
            {
                String text = (String) t
                    .getTransferData(DataFlavor.stringFlavor);
                System.out.println(text);
            }
            catch (UnsupportedFlavorException e1)
            {
                e1.printStackTrace();
            }
            catch (IOException e1)
            {
                e1.printStackTrace();
            }
        }
        Thread.sleep(1000);
}

我希望处理器仅在剪贴板更改时才能工作,而不是每秒检查一次。

第二,我找到了一种可能有效的方法

    this.clipboard = Toolkit.getDefaultToolkit()
         .getSystemClipboard();
    this.clipboard.addFlavorListener(new FlavorListener()
    {
        @Override
        public void flavorsChanged(FlavorEvent e)
        {
            // work with the clipboard contents
        }
    });

但是我仍然需要一个奇怪的while循环,该循环会消耗处理器时间来使程序保持活动状态。

我认为我应该使用wait and notfiy,但是我不确定如何使用。

0 个答案:

没有答案