我正在与我的团队一起工作,开发一个java项目。总而言之,我们有一个主类,它有一个实例化和调用“Save”类的方法。这个“保存”类通过几个构造函数和一些可见和不可见的方法将文件保存回服务器。该类是CPU密集型和耗时的,它阻止主应用程序显示进度条对话窗口,让用户知道保存的状态。他们要求我修改“保存”类,以便从它自己的线程中产生出来,这样主应用程序的其余部分就可以完成向用户显示信息的较小任务。帮助实现Java中的Runnable
这里是它的一个笼统的概念:
class MainApp{
...
private void doSave()
{
Save s = new Save();
StatusWindow sw = new StatusWindow();
if save_this
s.saveThis(sw);
if save_that
s.saveThat(sw);
...
}
...
}
class Save{
...
public void saveThis(StatusWindow s)
{
//alot of code
s.update;
}
public void saveThat(StatusWindow s)
{
//alot of code
s.update;
}
... // some non-visible methods, even more code
}
我感到目前正与Java线程一个新手,但我有他们是如何工作的一个基本的了解。据我所知,一个实现了Runnable的类,当它被实例化为一个新线程时,run()方法被执行。问题是,由于针对不同类型的文件有不同类型的保存方法,因此如何将这些方法实现到run()方法中? run()方法是在新线程中实例化类并在其上调用.start()时被执行的唯一方法吗?
这将是一个很好的解决方案这个问题? “Save”类是否需要重新设计才能实现Runnable?
如果需要更多的细节,请让我知道。感谢您的任何见解!
更新:感谢大家的帮助!这些解决方案将在未来派上用场。
是的我完全忘了在那里添加.start(),我会编辑我的问题。 Thanx :) – 2010-09-22 19:43:25
我喜欢第二个建议,现在看起来很快且容易实现 – 2010-09-23 13:47:14