// import java.io.*; class SeqThread extends Thread { static int seqno; SeqThread(String s) { super(s); // ¾²·¹µåÀÇ À̸§À» s·Î ÇÑ´Ù. } static synchronized void doSeq() { // synchronized¸¦ ÁÖ¼® ó¸®Çؼ­ ´Ù½Ã ½ÇÇàÇغ¸¶ó. for (int i=0; i<20; i++) { try { ThreadTest3.file.seek(0); // ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÆÄÀÏÀÇ Ã³À½À¸·Î } catch (IOException e) { System.out.println("File Seek Error"); System.exit(1); } try { seqno=ThreadTest3.file.readInt(); // ÆÄÀÏ¿¡¼­ int °ªÀ» Àд´Ù. } catch (IOException e) { System.out.println("File Read Error"); System.exit(1); } System.out.println( Thread.currentThread().getName()+": seq#="+Integer.toString(seqno) ); // ÇöÀç ¾²·¹µåÀÇ À̸§°ú seqno °ªÀ» Ç¥ÁØ Ãâ·ÂÀ¸·Î Ãâ·Â seqno++; // seqno °ªÀ» 1 Áõ°¡ try { ThreadTest3.file.seek(0); // ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÆÄÀÏÀÇ Ã³À½À¸·Î } catch (IOException e) { System.out.println("File Seek Error"); System.exit(1); } try { ThreadTest3.file.writeInt(seqno); // ÆÄÀÏ¿¡ int °ªÀ» ¾´´Ù. } catch (IOException e) { System.out.println("File Write Error"); System.exit(1); } } } public void run() { doSeq(); } } class ThreadTest3 { static RandomAccessFile file; public static void main(String args[] ) { try { // seqnofile ÆÄÀÏÀ» »ý¼ºÇؼ­ ÀÐ°í ¾²±â ¸ðµå·Î ¿¬´Ù. file=new RandomAccessFile(new File("seqnofile"), "rw"); } catch (IOException e) { System.out.println("File Open Error"); System.exit(1); } try { file.seek(0); // ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÆÄÀÏÀÇ Ã³À½À¸·Î } catch (IOException e) { System.out.println("File Seek Error"); System.exit(1); } try { ThreadTest3.file.writeInt(0); // seqnoÀÇ ÃʱⰪÀ» 0À¸·Î ÇÑ´Ù. } catch (IOException e) { System.out.println("File Write Error"); System.exit(1); } SeqThread t1=new SeqThread("¾²·¹µå1"); // ¾²·¹µå 1À» »ý¼º SeqThread t2=new SeqThread("¾²·¹µå2"); // ¾²·¹µå 2¸¦ »ý¼º t1.start(); // ¾²·¹µå 1À» ½ÇÇàÇÏ¿© run()À» È£Ãâ t2.start(); // ¾²·¹µå 2¸¦ ½ÇÇàÇÏ¿© run()À» È£Ãâ try {Thread.sleep(5000);} catch (InterruptedException e){} // 5ÃÊ ÈÄ(¾²·¹µå ¼öÇàÀÌ 3ÃÊ Á¤µµ¸é ³¡³¯ °ÍÀÌ´Ù.) ÆÄÀÏ ´Ý°í Á¾·á try { file.close(); // ¿­¸° ÀÓÀÇÁ¢±Ù ÆÄÀÏÀ» ´Ý´Â´Ù. } catch (IOException e) { System.out.println("File Close Error"); System.exit(1); } System.exit(0); // ÇÁ·Î¼¼½º¸¦ °­Á¦ Á¾·áÇÑ´Ù. ¸ðµç ¾²·¹µåÀÇ ¼öÇàÀÌ Á¾·áµÈ´Ù. } }