如何让多个线程对一个任务启动和停止

package thread;


import java.util.concurrent.TimeUnit;


/**

 * 

 */

public class ThreadStartAndStopTest {


    /**

     * 

扫描二维码关注公众号,回复: 2392197 查看本文章

     * @param args

     */

    public static void main(String[] args) {

        WorkScheduler.getIns().start();

        

        try {

            TimeUnit.MILLISECONDS.sleep(5000);

        } catch (InterruptedException e) {

        }

        WorkScheduler.getIns().stop();

    }

}

package thread;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 
 * 如何控制线程的启动和结束
 */
public class WorkScheduler {
    static private Logger logger = LoggerFactory.getLogger(WorkScheduler.class);


    private WorkScheduler() {
    }


    static WorkScheduler threadStartAndStop = new WorkScheduler();


    public static WorkScheduler getIns() {
        return threadStartAndStop;
    }


    private Thread   workThread;
    private Thread   workThread1;
    private WorkTask workTask;


    public void start() {
        workTask = new WorkTask();
        workThread = new Thread(workTask);
        workThread1 = new Thread(workTask);
        workThread.start();
        workThread1.start();
    }


    public void stop() {
        logger.info("receive xinhao to stop");
        if (workThread != null) {
            workTask.stop();
            try {
                workThread.join();
                workThread1.join();
            } catch (InterruptedException e) {
            }
            workTask = null;
            workThread = null;
            workThread1 = null;
        }
    }

}


package thread;


/**

 * 工作线程任务

 */

public  class WorkTask implements Runnable{



    private volatile boolean stop=false;

    

    /** 

     * @see java.lang.Runnable#run()

     */

    @Override

    public void run() {

        while(true){

            if(stop){

                System.out.println("receive signal to stop");

                return;

            }

            try {

                Thread.sleep(100);

            } catch (InterruptedException e) {

            }

            System.out.println(Thread.currentThread().getName()+": 11111");

            

        }

    }


    

    public void stop(){

        stop=true;

    }

}



猜你喜欢

转载自blog.csdn.net/u011955252/article/details/79018311