neatrain
发贴: 2
积分: 0
|
于 2005-08-17 22:33
各位大侠,我下了一个文件用来学习线程的同步问题,结果没有源码,我就把那个class文件反编译了一下,结果是下面这种东西,求大侠们指点指点。
import java.util.Vector; import javax.swing.SwingUtilities;
public class OVGUIClient implements Runnable, OVGUIClientInterface {
private boolean listening; private final Vector messages = new Vector(); private final OVGUIClientInterface localClient;
public OVGUIClient(OVGUIClientInterface ovguiclientinterface) { listening = true; localClient = ovguiclientinterface; }
public void processNotifyEvent(StringBuffer stringbuffer) { synchronized(messages) { messages.add(stringbuffer); messages.notifyAll(); } }
public void run() { _L2: StringBuffer stringbuffer; label0: { stringbuffer = null; synchronized(messages) { while(messages.isEmpty() && listening) { try { messages.wait(5000L); continue; } catch(InterruptedException interruptedexception) { return; } catch(Throwable throwable) { System.out.println("run() exception while waiting for a message, exiting thread"+ throwable); } return; } if(listening) { stringbuffer = (StringBuffer)messages.remove(0); break label0; } } return; } vector; JVM INSTR monitorexit ; StringBuffer stringbuffer1 = stringbuffer; try { Runnable runnable = stringbuffer1. new Runnable() {
public void run() { try { localClient.processNotifyEvent(message); } catch(Throwable throwable2) { String s; if(message.length() <= 200) s = message.toString(); else s = message.substring(200) + "..."; criticalThread("Runnable.run.processNotifyEvent() " + message.length() + " byte message:\n" + s, throwable2); } }
}; if(runnable != null) SwingUtilities.invokeAndWait(runnable); else System.out.println("doIt == null"); } catch(Throwable throwable1) { System.out.println("Runnable()", throwable1); } if(listening) goto _L2; else goto _L1 _L1: }
public void quit() { listening = false; }
}
|