当前位置: 首页 > 面试题库 >

Java线程在不关注OSX时进入hibernate状态

解博明
2023-03-14
问题内容

我正在编写一个程序,该程序侦听系统剪贴板中的更改。当剪贴板的内容更改时,侦听器在单独的线程上运行并执行某些操作(例如,写入文件)。

我正在使用ClipboardOwner接口轮询剪贴板,以便当我的程序失去对剪贴板的所有权(意味着另一个进程已修改剪贴板)时,在我的程序中触发了一个事件,可让我读取更改。

public class OwnershipClipboardListener extends Thread implements ClipboardOwner
{
    private Clipboard clipB = Toolkit.getDefaultToolkit().getSystemClipboard();

    public void run()
    {
        /* Initialize ClipboardListener and gain ownership of clipboard */
    }

    @Override
    public void lostOwnership(Clipboard clipboard, Transferable transferable)
    {
        /* Auto-fired when I lose Clipboard ownership.
           Can do processing and regaining ownership here */
    }    
}

问题是,在OSX中运行时,仅当我手动将Cmd-Tab移至扩展坞中正在运行的进程图标时,剪贴板的任何更改才会反映出来。因此,如果在我切换到停靠图标之前有多个剪贴板操作,则只有最后一个才起作用。在Linux或Windows上我不会遇到此问题。

这就像线程在程序失去焦点时进入睡眠状态,但是最后一个Event触发器在唤醒时仍会触发。有什么办法可以防止我入睡吗?


问题答案:

我怀疑OSX不会提供剪贴板更改的通知,因此Java会尽其所能,只要由于其他原因而被唤醒就通知您。

我的怀疑来自NSPasteboard文档,changeCount尤其是例程。它说:“因此,您可以在拥有粘贴板所有权时记录更改计数,然后将其与changeCount返回的值进行比较,以确定您是否仍然拥有所有权。” 没有提及使用事件来检测更改。



 类似资料:
  • 问题内容: 什么和何时在hibernate状态下使用DiscriminatorValue注释的最佳方案是什么? 问题答案: 这两个链接帮助我最了解继承概念: http://docs.oracle.com/javaee/6/tutorial/doc/bnbqn.html http://www.javaworld.com/javaworld/jw-01-2008/jw-01-jpa1.html?pag

  • 除了隐式用户界面线程之外,我还制作了两个线程(可运行的),它们内部都有一个 while 循环,我定期检查我实现的消息队列中的更新。 一开始的问题是这两个while循环是无限的,它们变化得如此之快,如此之多,几乎耗尽了设备的所有CPU。所以我考虑让while循环在每个周期后Hibernate大约100毫秒,让其他线程完成它们的工作,但是我遇到了另一个问题: 现在,问题是线程Hibernate了100

  • 问题内容: 我有产生新线程的执行主线程。在main()的执行主线程中,我正在调用。何时获得 未处理的异常 类型? 我不确定为什么会得到这个。我以为这是因为我需要对主线程的引用,所以我继续并通过进行了引用。 这不是让线程休眠的方法吗?我需要做的是让主线程等待/睡眠/延迟,直到它再次需要工作为止。 问题答案: 您看到的是编译错误,原因是您没有正确处理检查的异常(在这种情况下)。处理意味着执行以下操作之

  • > 我是Java多线程的新手。想知道线程池执行器中空闲线程的状态。它在RUNNABLE/WAITING中吗? 如果空闲线程处于RUNNABLE状态,新任务如何附加到空闲线程?AFAIK我们为线程/池分配一个可运行/可调用的对象。但我的问题是ThreadPoolExecitor如何将排队的可运行对象分配给空闲线程??

  • 问题内容: 这会使当前的UI线程休眠吗? 问题答案: 如果要在ui线程上调用sleep,它将阻塞ui线程。不要在ui线程上调用sleep。您不应该阻止ui线程。 http://developer.android.com/reference/java/lang/Thread.html http://docs.oracle.com/javase/tutorial/essential/concurren