Java教程

java实现线程的等待与唤醒

本文主要是介绍java实现线程的等待与唤醒,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

写好true和false变化的方法

    private static volatile boolean flag= true;

    public static void stopTask() {
       flag = false;
    }
    public static void startTask() {
        flag = true;
    }

多次调用单个线程(定时任务模拟调用线程)

    @Scheduled(cron = "*/1 * * * * ?")
    public void testThread() throws Exception {
        if (flag==true){
     new Thread(()-> {
         System.out.println("--------------------" );
             }).start();
    }}

单个线程内部循环(定时任务模拟调用线程(单个))

    @Scheduled(cron = "0 0 * * * ?")
    public  void  testThread1() throws InterruptedException {
        //单线程循环使用此方法
        final Object obj = new Object();
        //obj配合synchronized 对应同个对象
        Thread thread=  new Thread(()-> {
                  //循环100次
                 for (int i = 0; i <100 ; i++) {
                     System.out.println("--------------------" +i);
                     try {
                         Thread.sleep(2000);
                        //false让线程等待
                         if(flag==false){
                             synchronized (obj){
                                 obj.wait();
                             }
                         }
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
                 }
         });
        thread.start();
         while (true){
             Thread.sleep(2000);
              //true线程唤醒
             //Thread.currentThread().getState()当前线程状态
             //Thread.State.WAITING线程等待状态
             if(flag==true&&Objects.equals(thread.getState(), Thread.State.WAITING)){
                 synchronized (obj){
                     obj.notify();
                 }
             }
         }
    }

调用改变flag的方法

    @GetMapping("/start")
    public  String start(){
        Timing.startTask();
        return "启动成功";
    }
    @GetMapping("/stop")
    public  String stop(){
          Timing.stopTask();
        return "关闭成功";
    }

这篇关于java实现线程的等待与唤醒的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!