zoukankan      html  css  js  c++  java
  • java多线程实现定时器任务

    volatile是一个弱同步机制关键字,只能实现同步机制中的可见功能,不能实现互斥访问。用在变量的声明上时,表示多个线程获取此变量时,都是最新的数据(变量会自动更新最新数据)。
    synchronized 是一个内置锁,也就是java内部加锁机制。用在方法上时,每个线程进入的时候,它会获得方法所在的对象的锁,离开方法后释放对象锁。
    自定义定时任务
    任务管理类
    package com.effectJava.Chapter3;
    
    import java.util.concurrent.TimeUnit;
    
    public class ManagerTask {
    
        private  static  boolean isManagerTaskEnd;
    
        public synchronized  static void setIsManagerTaskEnd(boolean flage) {
           isManagerTaskEnd = flage;
        }
    
        public synchronized static boolean isIsManagerTaskEnd() {
            return isManagerTaskEnd;
        }
    
    //    private static mytimeTask timetask = new mytimeTask();
    
        public static void main(String... args) throws Exception {
    //        开启任务线程
            new Thread(){
                @Override
                public void run() {
                    while (true){
                        if(isIsManagerTaskEnd()){//没开启任务线程
                            setIsManagerTaskEnd(false);
                            new mytimeTask().start();
                        }
                    }
    
                }
            }.start();
            //开启timetask任务
            setIsManagerTaskEnd(true);
    
    
            TimeUnit.SECONDS.sleep(1);
    
            //关闭
    //        setIsManagerTaskEnd(false);
            //关闭timetask
            mytimeTask.setFlagesTrue(true);
    
            TimeUnit.SECONDS.sleep(2);
    
            mytimeTask.setFlagesTrue(false);
            setIsManagerTaskEnd(true);
    
        }
    
    
    }

    任务处理类

    package com.effectJava.Chapter3;
    
    public class mytimeTask  extends   Thread{
    
        private  volatile  static boolean flages ;
    
        private  static  int count;
        //设置可见性
        public static   boolean isFlages() {
            return flages;
        }
    
        public  static   void setFlagesTrue(boolean flage) {
            flages = flage;
        }
    
        @Override
        public void run() {
            while (!isFlages()) {
                System.out.println("执行任务");
                //执行任务代码
            }
        }
    
    
        public  synchronized static  int reCount() {
            return count++;
        }
    
        public  synchronized static  int getCount() {
            return count;
        }
    }
  • 相关阅读:
    leetcode 62. Unique Paths
    leetcode 345. Reverse Vowels of a String
    leetcode 344. Reverse String
    Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装
    yarn调度器 FairScheduler 与 CapacityScheduler
    Hive性能优化
    HBase笔记
    Zookeeper笔记
    Hadoop组件详解(随缘摸虾)
    ubuntu18.04.2 hadoop3.1.2+zookeeper3.5.5高可用完全分布式集群搭建
  • 原文地址:https://www.cnblogs.com/09120912zhang/p/8393692.html
Copyright © 2011-2022 走看看