我想在java产生流水号,按照初始数据开始相加,而不是用当前时间产生的.
比如原始数据为0,每次加1,要确保下一次获取时不从0开始加.
这个怎么时间呢?

解决方案 »

  1.   


    public class LinkId{
      private static int linkId = 0;
      private static final int MaxId= 10000;
      public static synchronized int createId(){
         if(linkId++>=MaxId)linkId=0;
         return linkId;
      }
    }
      

  2.   


    2楼的写法没错啊
    看清楚,static的
    而且还是用synchronized同步的,就算是多线程也能正常实现增量
      

  3.   

    如果是 JDK 5 或以上版本的话,可以使用 java.util.concurrent.atomic.AtomicInteger 类,
    这个可以不用加 synchronized 的。
      

  4.   


    在补充个问题60位的数据怎么相加呀?
    Long seq = 999999999999999999999999999999999999999999999999999999999999L;
    都报超出范围了. 这既有60位  不是说Long类型最大能保存64位的吗?
      

  5.   

    汗...不是64个数字叫64位....
    long是8字节长,64个二进制位
      

  6.   

    1 如果你不需要连续,只要求递增,可以用一个单独的表保存当前最大的顺序号,然后每次读取这个号,加一,并更新回去。
    hibernate里面有这种实现2  可以用数据库的自增长字段,比如 identity 或者 auto increasement类型的。他们会自动从当前最大的编号开始
      

  7.   

    一个saveNum类
    public class saveNum(){
    private int count;
    public int setCount(int count){
    this.count=count;
    }
    public void getCount(){
    return count;
    }另外一个类
    public class getNum(){
    private saveNum save;
    private int count=0;
    private int temp;
    public int getCount(save.setCount(temp)){
    if(temp>0)
    {
    temp++;
    }
    else{
    count++;
    temp=count;
    }
    return temp;
    }