java-Netbeans平台中的多线程编程

我浏览了有关NBP的书籍/文档,但是没有直接谈论NBP中的多线程编程.关于NBP中的多线程,有什么需要特别注意的地方吗?因此,如果我想创建一个多线程NBP应用程序,我只需要遵循常规的Java多线程编程实践,对吗?

解决方法:

要查看的主要内容是RequestProcessor和RequestProcessor.Task. RequestProcessor是一个线程池; RequestProcessor.Task是一项工作.

RequestProcessor所做的大部分工作与现在在JDK中执行的ExecutorService相似.仅使用JDK并不容易做到的主要事情是创建可以重新计划并重复运行的任务.例如,如果您想在用户停止键入超时后执行一些工作,这将非常有用:

private static final RequestProcessor rp = new RequestProcessor(MyClass.class);
private RequestProcessor.Task task = rp.create(new Runnable() {
  public void run() {
    //...do some expensive parsing or similar
  }
});

public void keyPressed (KeyEvent ke) {
  task.schedule(200); // (re)schedule the task 200ms in the future;  if schedule() is called again, it will be postponed
}

如果您使用的是Nodes API,则它是线程安全的,您可以根据需要更新节点.

如果您做的事情涉及到Swing组件,请记住始终使用EventQueue.invokeLater(Runnable)运行该代码-切勿使用EventQueue.invokeAndWait()-这是解决死锁的秘诀.

如果您有可能有时在事件线程上调用的代码,有时却没有,则NetBeans提供了一种确保您的代码在事件线程上运行的简单方法:Mutex.EVENT.readAccess(新的Mutex.Action(){…})

上一篇:java-如何使JScrollPane与嵌套JPanels一起正常工作?


下一篇:php-Netbeans可以自动创建Symfony2项目吗?