栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用Java内部静态类完成每秒钟一次采样

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Java内部静态类完成每秒钟一次采样

说明:

主要使用在接收数据过快,但是又不需要那么多数据的情况

如下例子,使用定时器,每100ms收到一个数据,但是通过采样每1000ms得到一个数据。

图片:

代码: 

public class Outer { 
        public  static class Inner{//成员内部类
            public  static long startTms =0;
        } 

    public Integer doSample(int value){
		if(Inner.startTms == 0){
			Inner.startTms=System.currentTimeMillis();
		}
        long endTms = System.currentTimeMillis();
        if(endTms-Inner.startTms>1000)
        {
        	Inner.startTms+=1000;//每秒钟完成一次采样
         	return value;//有效数据
        }
        return null;//如果间隔过短,为无效数据
    }
    
	public int valueRand = 0;
    public static void main(String[] args) {
    Outer out = new Outer();
     
	out.valueRand=0;
    Timer timer = new Timer();// 实例化Timer类
        timer.schedule(new TimerTask() {
            public void run() {
            	//System.out.println("vvvv");
            	out.valueRand++;
                Integer value =out.doSample(out.valueRand);
                if(value !=null)
                {
                	System.out.println("采样新值:"+value);
                }
                if(out.valueRand>100){
                	System.out.println("退出");
                	this.cancel();
                }
            }
        }, 0,100);// 毫秒
//System.out.println("退出-----");
    }
}

输出:

新值:12

新值:22

新值:32

新值:42

新值:52

新值:62

新值:72

新值:82

新值:92

退出

改进:

Java是个奇葩的语言,可以把内部类当成成员变量来看,所以把上面的调用部分封装以下,放到内部类,调用的时候就当调用一个内部函数就好了。

 

关于:

编者:李国帅

qq:9611153 微信lgs9611153

时间:2021-10-23  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号