我已经浏览了关于NBP的书籍/文档,但没有直接讨论NBP中的多线程编程。关于NBP中的多线程,有什么特别需要注意的吗?因此,如果我想创建一个多线程NBP应用程序,我只需要遵循常规的Java多线程编程实践,对吧?
发布于 2011-02-28 06:17:19
主要要看的是RequestProcessor和RequestProcessor.Task。RequestProcessor是一个线程池;RequestProcessor.Task是一个作业。
RequestProcessor所做的大部分工作与ExecutorService现在在RequestProcessor中所做的工作类似。使用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 (new Mutex.Action() { ... })
发布于 2011-02-22 15:23:43
我只需要遵循常规的
多线程编程实践,对吧?
是
只有java编译器才能从您的NBP编译您的Javacode。
发布于 2011-02-23 03:05:50
在NetBeans RCP中有许多支持多线程编程的类。
org.openide.util包中有一些与线程和RCP相关的有趣类。
大多数这些类都可以帮助你创建线程之类的东西。在创建java多线程编程实践之后,您仍然需要使用它们。
您可能还想看看Progress UI api。
https://stackoverflow.com/questions/5075217
复制相似问题