内部线程

    技术2022-05-11  126

    public class SelfRun implements Runnable{    private Thread internalThread;    private volatile boolean noStopRequested;    public SelfRun()    {        System.out.println( "in constructor - initializing..." );        noStopRequested = true;        internalThread = new Thread( this );        internalThread.start();    }

        public static void main(String[] args)    {        SelfRun sr = new SelfRun();        try        {            Thread.sleep( 3000 );        }catch( InterruptedException x )        {                    }        sr.stopRequest();    }

        public void run()    {        if( Thread.currentThread()!=internalThread )        {            throw new RuntimeException( "only the internal " +                   "thread is allowed to invoke run()" );        }        while( noStopRequested )        {            System.out.println( "in run() - still going..." );            try            {                Thread.sleep( 700 );            }catch( InterruptedException x )            {                Thread.currentThread().interrupt();            }        }    }    public void stopRequest()    {        noStopRequested = false;        internalThread.interrupt();    }    public boolean isAlive()    {        return internalThread.isAlive();    }}///

    in constructor - initializing...in run() - still going...in run() - still going...in run() - still going...in run() - still going...in run() - still going...


    最新回复(0)