我的问题属于Java中的多线程。我正在将我在Visual Basic 2008中编写的应用程序翻译成Java。在VB中有一个名为BackgroundWorker的类,它允许编码器在另一个线程上执行任务,很像Java中的SwingWorker
。唯一明显的区别是,使用BackgroundWorker
线程为run()
,它会在包含要在后台执行的代码的主线上触发名为DoWork()
的事件。此外,代码执行后,会在前台线程上触发一个RunWorkerCompleted()
事件来解释结果。从Java中的后台线程中发起主线事件
我发现BackgroundWorker
安装非常有用,它看起来比SwingWorker
更灵活,我只是想知道是否可以(并且可以接受)在Java中以相同的方式触发事件?如果是的话,我会怎么做呢?由于我只通过SwingWorker
进行了快速扫描,因此它可能具有类似的功能,而且可以正常工作,在这种情况下,我很乐意了解这一点。
干杯,
喧闹
编辑:
KEWL。欢呼家伙,感谢您的及时回复,并对我相当时间不严的回复表示歉意。我会把你的想法放在一个奥斯卡,抱歉coobird,我没有完全遵循 - 任何进一步的解释将受到欢迎(也许是一个例子)。
回想一下:我想要一个可运行的类,以便在我的代码中实例化一个实例。 runnable类有两个事件,其中一个从后台线程触发并包含要在后台运行的代码(DoWork()
),另一个事件在后台线程完成任务后在前台线程上触发(RunWorkerCompleted()
) 。
如果我正确地理解你的建议,我可以火从运行的类run()
方法DoWork()
事件,因此,它会在后台线程来执行,然后我可以使用SwingUtilities.invokeLater()
方法火RunWorkerCompleted()
事件上前景线程,一旦后台线程完成执行。
是吗?
叶氏是看好 – OscarRyz 2008-12-06 03:44:01