`
eyes_on_you
  • 浏览: 20533 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

生成四个随机号码

 
阅读更多

一次生成四个随机号码,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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics