生成四个随机号码

一次生成四个随机号码,12位,可以字母和数字的组合,不能有规律,一年内不能重复。要考虑并发。有没有不去对比以前的,生成后就保证不重复。

 

public class RandomUuid 
{
	public static void main(String []args)
	{
		String uuid = java.util.UUID.randomUUID().toString();
		String s    = uuid.toString().replaceAll("-", "").substring(0, 12);
		System.out.println(uuid);
		System.out.println(s);
	}
}
输出:3e11650d-a030-4eb4-bda0-94be301839a4
         3e11650da030

 

 

考虑并发就把生成编号的类设计成单例模式,然后加锁便可

package littlejava;

public class RandomUuid 
{
	private static RandomUuid ruuid  = new RandomUuid();
	private RandomUuid()
	{		
	}
	
	public static RandomUuid getRandomUuidInstance()
	{
		return ruuid;
	}
	
	public synchronized String getUUID12()//如果不同步,多线程刹那间有可能获取到同一个uuid(已经试过)
	{
		return java.util.UUID.randomUUID().toString().replaceAll("-", "").substring(0, 12);
	}
	
}

public class MyTask implements Runnable{

	@Override
	public void run() {
		String temp;
		for(int i=0;i<100;i++)
		{
			RandomUuid ru= RandomUuid.getRandomUuidInstance();
			temp=ru.getUUID12();
			System.out.println(temp);
		}
	}

}

public class UuidMain {
	public static void main(String [] args)
	{
		MyTask mytask= new MyTask();
		Thread t1 = new Thread(mytask);
		Thread t2 = new Thread(mytask);
		Thread t3 = new Thread(mytask);
		Thread t4 = new Thread(mytask);
		Thread t5 = new Thread(mytask);
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();	
	}
}
输出:45d5a53d3d39
313cdca23032
a066ae1e5121
821bfa0926de
2daa8e159355
a71aac3cd10d
9087da9d940c
edc1d61eca33
53d8de5f8805
edb0e536236a
b09d2b27468c
72a0d88d9d8a
de09701f527a
3bf8bfebca07
f23957c45591

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值