为什么在SWT多线程中使用管道流就会出现GUI界面卡死现象?
我是在GUI中的styledText上显示log4j日志和Console的内容,text中的内容是可以显示的,但是整个GUI却卡死了。
然而,我自己使用“重写打印流”的方式却没有问题。但是我又必须使用管道流才行,因为要在不同的进程之间的线程间进行数据
读写。 晕死啊!!!! 回答前请注意:
1,我知道如何使用Display.getCurrent().asyncExec()和syncExec()。
2,我也知道“用户线程”和“非用户线程”的用法。或者是“前台线程”“后台线程” 的用法。
3。管道流,log4j和GUI各部分程序本身是没有问题的。
4。不好意思,代码很长不好贴,希望有SWT界面卡死卡死经验的帮帮忙。
5。如果谁对SWT内部特殊“锁”的运行机制有了解,也可以讲一讲。 都一个多星期了,晕死啊!
我是在GUI中的styledText上显示log4j日志和Console的内容,text中的内容是可以显示的,但是整个GUI却卡死了。
然而,我自己使用“重写打印流”的方式却没有问题。但是我又必须使用管道流才行,因为要在不同的进程之间的线程间进行数据
读写。 晕死啊!!!! 回答前请注意:
1,我知道如何使用Display.getCurrent().asyncExec()和syncExec()。
2,我也知道“用户线程”和“非用户线程”的用法。或者是“前台线程”“后台线程” 的用法。
3。管道流,log4j和GUI各部分程序本身是没有问题的。
4。不好意思,代码很长不好贴,希望有SWT界面卡死卡死经验的帮帮忙。
5。如果谁对SWT内部特殊“锁”的运行机制有了解,也可以讲一讲。 都一个多星期了,晕死啊!
public void handleEvent(EventXXX)
{
//some operations.在UI线程中。
}
});还有导致你卡死的方法中加入,System.out.println(Thread.getCurrentThread().getName()),看看是哪一个线程。如果实在不能解决,可以将代码发给我。SWT,Swing, GTK, QT等都属于单线程图形框架,还是很简单的。