4つのランダム番号を生成

2205 ワード

一度に4つのランダム番号、12ビットを生成し、アルファベットと数字の組み合わせができ、規則的ではなく、1年以内に繰り返すことはできません.同時性を考慮しなければならない.以前のものと比較しないで、生成した後に重複しないことを保証します.
 
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