java并发冲突试图在JTextArea中使用BufferedWriter
我在输出到JTextArea时遇到了某种线程问题。我设置了一个BufferedWriter来写入这个文本区域,但由于某些原因,它在当前函数完成之前不会写入这个区域。例如,我有一段代码,可以检查URL列表,看看它们是好是坏:
for( final String s : urls ){
String sContent = IO.getURLContent( s );
if( sContent == null ){
writeLine( "Error " + s );
} else {
writeLine( "Worked " + s );
}
}
void writeLine( String sLineText ) throws java.io.IOException {
mbwriter.write(sLineText);
mbwriter.newLine();
mbwriter.flush();
}
输出仅在循环完成后发生,即使在检查每个URL后刷新写入程序。我尝试将IO操作放在一个单独的线程中,如下所示:
for( final String s : urls ){
SwingUtilities.invokeLater( new Runnable() {
public void run(){
String sContent = IO.getURLContent( s );
if( sContent == null ){
writeLine( "Error " + s );
} else {
writeLine( "Worked " + s );
}
}
}
} );
}
但这没有什么区别,输出仍然被阻塞,直到整个循环完成
请注意,在此操作期间,整个Swing接口将挂起。你不能点击任何东西,即使是靠近窗户的。界面完全冻结
共 (0) 个答案