listenerthreadimpl.java

来自「JAVA 所有包」· Java 代码 · 共 130 行

JAVA
130
字号
/* * @(#)ListenerThreadImpl.java	1.15 05/11/17 *  * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.impl.transport;import java.io.IOException;import com.sun.corba.se.pept.transport.Acceptor;import com.sun.corba.se.pept.transport.ListenerThread;import com.sun.corba.se.pept.transport.Selector;import com.sun.corba.se.spi.orb.ORB;import com.sun.corba.se.spi.orbutil.threadpool.Work;import com.sun.corba.se.impl.orbutil.ORBUtility;public class ListenerThreadImpl    implements	ListenerThread,	Work{    private ORB orb;    private Acceptor acceptor;    private Selector selector;    private boolean keepRunning;    private long enqueueTime;    public ListenerThreadImpl(ORB orb, Acceptor acceptor, Selector selector)    {	this.orb = orb;	this.acceptor = acceptor;	this.selector = selector;	keepRunning = true;    }    ////////////////////////////////////////////////////    //     // ListenerThread methods.    //    public Acceptor getAcceptor()    {	return acceptor;    }    public void close()    {	if (orb.transportDebugFlag) {	    dprint(".close: " + acceptor);	}	keepRunning = false;    }    ////////////////////////////////////////////////////    //    // Work methods.    //    // REVISIT - this needs alot more from previous ListenerThread    public void doWork()    {	try {	    if (orb.transportDebugFlag) {		dprint(".doWork: Start ListenerThread: " + acceptor);	    }	    while (keepRunning) {		try {		    if (orb.transportDebugFlag) {			dprint(".doWork: BEFORE ACCEPT CYCLE: " + acceptor);		    }		    acceptor.accept();		    if (orb.transportDebugFlag) {			dprint(".doWork: AFTER ACCEPT CYCLE: " + acceptor);		    }		} catch (Throwable t) {		    if (orb.transportDebugFlag) {			dprint(".doWork: Exception in accept: " + acceptor,t);		    }		    orb.getTransportManager().getSelector(0)			.unregisterForEvent(getAcceptor().getEventHandler());		    getAcceptor().close();		}	    }	} finally {	    if (orb.transportDebugFlag) {		dprint(".doWork: Terminated ListenerThread: " + acceptor);	    }	}    }    public void setEnqueueTime(long timeInMillis)     {	enqueueTime = timeInMillis;    }    public long getEnqueueTime()     {	return enqueueTime;    }    public String getName() { return "ListenerThread"; }    ////////////////////////////////////////////////////    //    // Implementation.    //    private void dprint(String msg)    {	ORBUtility.dprint("ListenerThreadImpl", msg);    }    private void dprint(String msg, Throwable t)    {	dprint(msg);	t.printStackTrace(System.out);    }}// End of file.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?