计数器

来源:互联网 发布:js click 只点击第一个 编辑:程序博客网 时间:2024/04/27 14:37
package net.yhte.its.jl.config;import net.yhte.its.jl.JLClientSendMsgByHttp;import net.yhte.its.jl.config.JLCountByHttp;public class JLCountByHttp {    private static int count;    private static int num;    private static JLCountByHttp instance=null;    public synchronized int getCount() {        return count;    }    public synchronized void setCount(int count) {        JLCountByHttp.count = count;    }    public synchronized int getNum() {        return num;    }    public synchronized void setNum(int num) {        JLCountByHttp.num = num;    }    public static JLCountByHttp getInstance(){        if(instance==null){            synchronized(JLClientSendMsgByHttp.class){                if(instance==null){                    instance = new JLCountByHttp();                    JLCountByHttp.count=0;                    JLCountByHttp.num = 0;                }            }        }        return instance;    }    /**     * 计数器     * @param b     * @return     */    public synchronized int count(boolean b){        if(b){            JLCountByHttp.count = JLCountByHttp.count+1;        }else{            JLCountByHttp.count = JLCountByHttp.count-1;        }        return JLCountByHttp.count;    }    /**     * 流水号     * @return     */    public synchronized String num(){        if(JLCountByHttp.num == 999999){            JLCountByHttp.num = 0;        }else{            JLCountByHttp.num = JLCountByHttp.num + 1;        }        return String.format("%06d", JLCountByHttp.num);    }}

synchronized 使计数安全,不会重复计数。
“String.format(“%06d”, JLCountByHttp.num)”数字前自动补零,“6”表示6位数,即数字为22,补零后为“000022”。

public class JLClientSendMsgByHttp {    public static void test() {        // 流水号        String num = JLCountByHttp.getInstance().num();        System.out.println(num);    }}
原创粉丝点击