我有一个具有GUI和TCP服务器的应用程序。 TCP服务器运行在不同的线程中,当它收到某个数据包时,它应该开始播放视频文件(来自MediaPlayer对象)。问题是,作为一个GUI组件,视频可能仅在主线程调用时才显示。我添加了一个监听器类的主类:另一个线程的监听器
Class RequestListener implements NBRequestListener{ /* NBRequestListener is the interface */
public void onRequestArrived(String request) {
processRequest(request); /* This method will run the video */
}
我在主线程创建的监听器,并设置为服务器中的监听器:
RequestListener listener = new RequestListener();
server.setRequestListener(listener);
服务器的代码是:
public void setRequestListener(_listener) {
listener = _listener; } /* listener is defined as RequestListener */
和事件的调用(在服务器)仅仅是:
listener.onRequestArrived(input_from_client);
但是侦听器方法在服务器线程中调用,而不是在主线程中调用,因此我得到异常:java.lang.reflect.InvocationTargetException
。你能帮忙指出问题吗?
感谢,但由于我的主线程是GUI线程,它不会导致没有GUI组件出现(因为线程被锁定)? – MByD 2011-03-07 08:42:18