gpt4 book ai didi

java - 异步任务的线程池?

转载 作者:行者123 更新时间:2023-12-01 13:04:57 25 4
gpt4 key购买 nike

我正在使用 JFace 编写一个简单的文件浏览器应用程序。应用程序的逻辑可以简化为:

  1. 在 TableViewer 中显示文件夹的内容。
  2. 每当双击文件夹项目时,就会异步加载(以保持 UI 响应)其内容并显示它。

因此,在我看来,至少涉及 2 个线程:a) UI 线程和 b) 获取文件夹内容的后台线程。

这里真正困扰我的是两个线程如何通信以及我是否必须“发明轮子”?更具体地说:

  1. 双击某个项目时如何告诉后台线程?我想我需要在两个线程之间共享一个任务队列,或者 JFace 是否已经提供了一些异步任务机制?
  2. 如何告诉 UI 线程数据已到达并重新绘制表格?选择哪一个,asyncexec 还是syncexec?

最佳答案

我通常会做这样的事情:

// On double-click, start a new thread
new Thread(new Runnable()
{
@Override
public void run()
{
// Get your new data in this thread
final MyFancyDataObject data = SomeOtherClass.goAndGetMyData();

// Update the GUI, this is the safe way to do it from a non-gui-thread
Display.getCurrent().asyncExec(new Runnable()
{
public void run()
{
GuiClass.updateContent(data);
}
});
}
}).start();

关于java - 异步任务的线程池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com