Threadクラス、Runnableインタフェースおよびシングルトン
戻る
/**
$Id: GuidManager.html,v 1.1 2009/06/22 16:11:45 kishi Exp kishi $
*/
public class GuidManager {
private static long serialNo = 0;
private static GuidManager uniqueInstance = null;
/** シングルトンです */
private GuidManager() {
// Do nothing
}
public static GuidManager getInstance() {
if ( uniqueInstance == null ) {
uniqueInstance = new GuidManager();
}
return uniqueInstance;
}
/** 次の連番を得る */
public synchronized long getSerialNo() {
serialNo ++;
return serialNo;
}
/** テストコード */
public static void main( String[] args ) {
Runnable runnableA = new Runnable() {
public void run() {
for ( int i = 0;i < 10;i++ ) {
GuidManager gm = GuidManager.getInstance();
System.out.println( "A: " + gm.getSerialNo() );
try {
Thread.sleep( 400 );
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
};
Runnable runnableB = new Runnable() {
public void run() {
for ( int i = 0;i < 10;i++ ) {
GuidManager gm = GuidManager.getInstance();
System.out.println( "B: " + gm.getSerialNo() );
try {
Thread.sleep( 300 );
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
};
Thread thread1 = new Thread( runnableA );
thread1.start();
Thread thread2 = new Thread( runnableB );
thread2.start();
}
}
■以下実行結果
$ java -cp . GuidManager
A: 1
B: 2
B: 3
A: 4
B: 5
A: 6
B: 7
A: 8
B: 9
B: 10
A: 11
B: 12
A: 13
B: 14
A: 15
B: 16
B: 17
A: 18
A: 19
A: 20
戻る