我正在创建一个解析和处理XML文件的程序。需要有一个在分析和处理XML文件时运行的GUI。有几个JProgressBars
,4个计数器和2个用于显示当前文件和目录的文本字段。在FixedThreadPool中运行预定的线程
我在解析和处理过程中正在更新GUI时遇到问题。我认为最好的方法是创建一个newFixedThreadPool()
,让它们同时运行。问题是我想每秒更新一次GUI,但也有解析和处理不断运行,所以看起来好像有一个ScheduledThreadPool
是不可能的。
所以我的问题是,是否有可能在FixedThreadPool
运行预定的线程和普通线程?如果是这样,我该如何去做,如果没有,如果没有,你们中的任何人对如何解决这个问题有什么建议吗?
GUIThread类:
GUIThread()
{
guiThread = new Thread(this);
guiThread.start();
}
@Override
public void run()
{
try{
checkProcessedFiles(getFilesProcessed());
checkDirErrorCount(getErrorCount());
checkAwardCount(getAwardCount());
checkErrorCount(getErrorCount());
} catch(IOException ioe){}
}
ProcessThread类:
ProcessThread()
{
processThread = new Thread(this);
processThread.start();
}
@Override
public void run()
{
try{
MainGUI mGUI = new MainGUI();
Migrate migrate = new Migrate(mGUI.getXMLDirectory());
migrate.processDirectory();
} catch(Exception e){}
}
主要方法:
ExecutorService es = Executors.newFixedThreadPool(2);
es.execute(new GUIThread()); //THIS NEEDS TO BE SCHEDULED
es.execute(new ProcessThread());
废话,我应该指出这是在Java中。我会谷歌,看看是否有Java中的信号类 – Collin
是的,你应该必须有Java中的WorkerProc(我认为) – dewelloper