ÀÚ¹Ù¿¡¼ Àß Á¤ÀÇµÈ ½Ã½ºÅÛ µ¶¸³ÀûÀÎ Ãß»ó À©µµ¿ì ½Ã½ºÅÛ ¿Ü¿¡ ¶ÇÇϳª ÁÖ¸ñÇÒ ºÎºÐÀº ¾²·¹µå¸¦ Áö¿øÇÑ´Ù´Â Á¡ÀÌ´Ù.
¾²·¹µå´Â ÇÁ·Î¼¼½º ³»¿¡¼ ÇϳªÀÇ ¿¬¼ÓÀûÀÎ Á¦¾î È帧ÀÌ´Ù. ÀÌ°ÍÀº ÇÁ·Î±×·¥ ³»¿¡¼ ½ÇÇàµÉ ¶§ °¢°¢ÀÇ ¾²·¹µå´Â ÇϳªÀÇ ½ÃÀÛÁ¡ °ú ÇϳªÀÇ
È帧À» °¡Áö°í, ·±Å¸ÀÓÀÇ ¸ðµç ½ÃÁ¡¿¡¼ ÇϳªÀÇ ½ÇÇà ÁöÁ¡À» °¡Áö°í ¶Ç ÇϳªÀÇ ³¡Á¡À» °¡Áø´Ù´Â ÀǹÌÀÌ´Ù. ¾²·¹µå °´ ü´Â ¸ÖƼ¾²·¹µå
ÇÁ·Î±×·¡¹ÖÀÇ ±â¹ÝÀ¸·Î ¸ÖƼ¾²·¹µå ÇÁ·Î±×·¡¹ÖÀº ÇϳªÀÇ ÇÁ·Î±×·¥ÀÌ ¼·Î ´Ù¸¥ ÀÏÀ» ¼öÇàÇÏ´Â ¿©·¯ °³ÀÇ ¾²·¹µå ¸¦ µ¿½Ã¿¡ ¼öÇàÇÒ ¼ö
ÀÖ°Ô ÇØ ÁØ´Ù.
½ÇÇà ¾²·¹µå¸¦ »õ·Î Çϳª ¸¸µé·Á¸é java.lang.Thread Ŭ·¡½º¿¡¼ ÇÏÀ§ Ŭ·¡½º¸¦ ÆÄ»ýÇÏ¿© run() µµ±¸¸¦ ¿À¹ö¶óÀ̵åÇÏ¸é µÈ´Ù. ¿À
¹ö¶óÀ̵åµÈ run() µµ±¸¿¡´Â »õ·Î ¸¸µé¾îÁø ¾²·¹µå°¡ ¼öÇàÇÒ Äڵ尡 µé¾î°¡°Ô µÈ´Ù. ´ÙÀ½ start() µµ±¸¸¦ È£ÃâÇÏ¸é ¾²·¹µå ÀνºÅÏ ½º°¡
»ý¼ºµÈ´Ù. start() µµ±¸´Â ¾²·¹µå¸¦ »ý¼ºÇÏ°í run() µµ±¸¸¦ ½ÇÇàÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.
¿¹¸¦ µé¾î º¸¸é ´ÙÀ½°ú °°´Ù.
class PrimeThread extends Thread { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void run() { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // PrimeThreadÀÇ ½ÇÇà ÄÚµå ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ } }
ÀÌ ¾²·¹µå¸¦ ½ÇÇà½ÃÅ°·Á¸é ´ÙÀ½°ú °°ÀÌ ¾²·¹µå¿¡¼ ÆÄ»ýÇÑ Å¬·¡½ºÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÑ ÈÄ start()¸¦ È£ÃâÇÑ´Ù.
¡¡PrimeThread p = new PrimeThread(); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡ p.start(); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ...
¾²·¹µå¸¦ »ý¼ºÇÏ´Â ¶ÇÇϳªÀÇ ¹æ¹ýÀº Runnable ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. Runnable ÀÎÅÍÆäÀ̽º¸¦ Æ÷ÇÔÇÑ ¸ðµç °´Ã¼´Â ÀÌ ¹æ¹ýÀ¸·Î ÇϳªÀÇ ¾²·¹µå·Î ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù.
class Primes implements Runnable { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ public void run() { ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // PrimeThreadÀÇ ½ÇÇà ÄÚµå ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ } }
ÀÌ ¾²·¹µå¸¦ ½ÇÇàÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
Primes p = new Primes(); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡ new Thread(p).start(); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ...
ÀÚ¹Ù °¡»ó ±â°è(ÀÚ¹ÙÀÇ Ä¿³Î·Î º¼ ¼ö ÀÖÁö¸¸ ±â°è µ¶¸³ÀûÀ¸·Î Ãß»óÈµÈ ºÎºÐ)´Â µ¥¸ó ¾²·¹µå°¡ ¾Æ´Ñ ¸ðµç ¾²·¹µå°¡ Á¾·áÇÒ ¶§±î Áö
½ÇÇàµÈ´Ù. ¾²·¹µå´Â run() µµ±¸¸¦ ¸ðµÎ ¼öÇàÇÏ°í ¹ÝȯµÉ ¶§³ª stop() µµ±¸°¡ È£ÃâµÉ ¶§ Á¾·áÇÑ´Ù.
»õ·Î¿î ¾²·¹µå°¡ »ý¼ºµÉ ¶§ »ý¼ºµÇ´Â ¾²·¹µå´Â ºÎ¸ð ¾²·¹µå(Áï ÀÚ½ÅÀ» »ý¼ºÇÑ ¾²·¹µå)·ÎºÎÅÍ ¿ì¼±±Ç(priority)°ú µ¥¸ó Ç÷¡±×¸¦
»ó¼Ó¹Þ´Â´Ù.
´ÙÀ½Àº °£´ÜÇÑ ¾²·¹µå ¿¹Á¦ÀÌ´Ù. 100°³ÀÇ ¾²·¹µå¸¦ Â÷·Ê·Î ¸¸µé¸é, »ý¼ºµÈ ¾²·¹µå´Â ÀÚ½ÅÀÇ À̸§À» Ãâ·ÂÇÏ°í Á¾·áÇÑ´Ù. 100°³ÀÇ
¾²·¹µå°¡ »ý¼ºµÇ´Â °ÍÀº ¼ø¼´ë·ÎÀÌÁö¸¸ »ý¼ºµÈ 100°³ÀÇ ¾²·¹µå°¡ ¼ø¼´ë·Î ÀÚ½ÅÀÇ ¹®¸ÆÀ» ¼öÇàÇÑ´Ù´Â º¸ÀåÀº ¾øÀ¸¸ç ¹®¸Æ ¼öÇà
ÁßÀ̶ó´Â ¹®ÀÚ¿À» Ãâ·ÂÇϱâ Àü¿¡ System.exit(0)°¡ È£ÃâµÇ¾î °Á¦·Î Á¾·áÇÒ °¡´É¼ºµµ ÀÖ´Ù.
¡¡
¡¡
µ¿±âÈ´Â ¸ÖƼ ¾²·¹µå ÇÁ·Î±×·¡¹Ö¿¡¼ °íÀüÀûÀÎ ¹®Á¦ÀÌ´Ù. ÀÌ ±ÛÀÇ ¼µÎ¿¡¼ µîÀåÇß´ø öÇÐÀÚµéÀÇ ¸¸Âù ¾ÖÇø´À» ±â¾ïÇÏ´ÂÁö? ÀÌ
¾ÖÇø´ÀÇ ÁٰŸ®´Â ´ÙÀ½°ú °°´Ù.
»ý°¢ÇÏ´Â °Í°ú ½Ä»çÇÏ´Â °Í, µÎ °¡Áö Àϸ¸ Çϴ öÇÐÀÚ ´Ù¼¸ ¸íÀÌ ÀÖ´Ù. À̵é öÇÐÀÚ »çÀÌ¿¡ Çϳª¾¿ÀÇ ½ºÆ½ÀÌ ³õ¿© ÀÖ´Ù. ½Ä»ç ¸¦ ÇÏ·Á¸é
¾çÂÊÀÇ ½ºÆ½À» ¸ðµÎ °¡Á®¾ß¸¸ ÇÑ´Ù.
¸¸¾à ¸ðµç öÇÐÀÚ°¡ ¿À¸¥ÂÊÀÇ ½ºÆ½À» Àâ°í ÀÖ°í ¿ÞÂÊÀÇ ½ºÆ½À» ±â´Ù¸°´Ù¸é ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ±×µéÀº ¾Æ¹«µµ ¿ÞÂÊ ½ºÆ½À» ¾òÀ» ¼ö
¾øÀ¸¹Ç·Î ¸ðµÎ ±¾¾îÁ×°Ô µÈ´Ù. ¹°·Ð öÇÐÀÚµéÀº ¸ðµÎ »ç±â¸¦ Ä¥ ÁÙ ¸ð¸£¸ç ¸Ô´Â ¾çµµ ¸ðµÎ °°´Ù°í °¡Á¤ÇÑ´Ù. ÀÌ·± »óŸ¦ µ¥ µå¶ôÀ̶ó°í
ÇÑ´Ù. µ¥µå¶ôÀ» ¹æÁöÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ÀÌ ¾ÖÇø´¿¡¼´Â ´Ù¼¸ °³ÀÇ ½ºÆ½ Áß Çϳª¸¦ Ç¥½ÃÇÏ¿© Ç¥½ÃµÈ ½ºÆ½À» ÀâÀ» °æ¿ì ¹Ýµå½Ã
³»·Á³õ°í ´Ù¸¥ ½ºÆ½À» ½ÃµµÇϵµ·Ï ÇÏ°í ÀÖ´Ù. ÀÌ·¸°Ô Çϸé À§¿Í °°Àº µ¥µå¶ô »óȲÀÌ ¹ß»ýÇϱâ Àü¿¡ Ç¥½ÃµÈ ½º ƽÀÇ ¿ÞÂÊ Ã¶ÇÐÀÚ´Â
¿À¸¥ÂÊÀÇ Ç¥½ÃµÈ ½ºÆ½À» ³»·Á³õ°í ¿ÞÂÊ ½ºÆ½À» ±â´Ù¸®°Ô µÇ¹Ç·Î Ç¥½ÃµÈ ½ºÆ½ÀÇ ¿À¸¥ÂÊ Ã¶ÇÐÀÚ°¡ ¿ÞÂÊ ½ºÆ½À» ¾òÀ» ¼ö ÀÖ°Ô µÈ´Ù.
¡¡´ÙÀ½Àº µ¥µå¶ô »óŸ¦ Ç¥ÇöÇØÁÖ´Â °£´ÜÇÑ ¾ÖÇø´ ¿¹Á¦ÀÌ´Ù.
¡¡
<ThreadTest2.html>
<html>
<head><title>Thread Test 2</title></head>
<body>
<h2>DeadLock Condition</h2>
<applet code="ThreadTest2" width=300 height=300>
<param name=WorkA value=5> <! value´Â 1/1000 ÃÊ ´ÜÀ§·Î ÁÖ¾îÁø´Ù.>
<param name=WorkB value=10>
<! µÎ °³ÀÇ º¯¼ö °ªÀÌ °°°Å³ª ºñ½ÁÇÒ °æ¿ì °á°ú´Â µÑ ´Ù ½ÇÆÐ(µ¥µå¶ô)ÀÌ´Ù.>
</applet>
</body></html>
ÀÌ ¿¹Á¦ ¾ÖÇø´Àº º¯¼ö·Î WorkA¿Í WorkB¸¦ ¹Þ´Âµ¥ ÀÌ°ÍÀº A, B ¾²·¹µåÀÇ °¢°¢ÀÇ ÀÛ¾÷ ½Ã°£À̶ó°í º¼ ¼ö ÀÖ´Ù. ½ÇÁ¦·Î sleep() µµ±¸ÀÇ
ÀÎÀÚ°ªÀ¸·Î »ç¿ëµÈ´Ù. ÀÌ µÎ °ªÀÌ ºñ½ÁÇϸé (¿¹¸¦ µé¾î ±âº»°ªÀÎ 5¶ó°í Çϸé) µÎ ¾²·¹µåÀÇ ½ÇÇà ¼Óµµ°¡ ºñ½ÁÇÏ°Ô µÇ¾î ¼ ·Î ´Ù¸¥ÂÊÀÌ ¸ÕÀú
¼öÇàÀ» ³¡³»°í ±× °á°ú¸¦ ±â·ÏÇØ Áֱ⸦ ±â´Ù¸®´Â µÎ ¾²·¹µå´Â ¸ðµÎ ½ÇÆÐÇÏ°Ô µÈ´Ù. ¼·Î°¡ »ó´ë¹æÀÇ °ªÀ» ¹« ÇÑÈ÷ ±â´Ù¸®´Â »óȲ, ÀÌ°ÍÀÌ
¹Ù·Î µ¥µå¶ô Á¶°ÇÀÌ´Ù.(½ÇÁ¦ µ¥µå¶ô »óȲÀÌ µÇ¸é ÇÁ·Î¼¼½º´Â ÁøÇàÀ» ¸ØÃß°Ô µÈ´Ù. ÀÌ ¿¹Á¦´Â ´Ü¼øÈ÷ µ¥µå¶ô Á¶°Ç¸¸ º¸¿©ÁÖ°í Á¾·áÇϵµ·Ï
Çß´Ù.) ÀÎÀÚ°ªÀÌ Â÷ÀÌ°¡ ³ª´Â °æ¿ì, ¿¹¸¦ µé¾î WorkA=5, WorkB=10ÀÎ °æ¿ì¿¡´Â º¸Åë Çϳª°¡ ¸ÕÀú ÀÏÀ» Á¾·áÇÏ°Ô µÇ¹Ç·Î µ¥µå¶ô »óȲÀÌ
¹ß»ýÇÏÁö ¾ÊÀ¸³ª ¾²·¹µåÀÇ ¼öÇà ¼ø¼´Â »óȲ¿¡ µû¶ó ¿î¿µ üÁ¦ÀÇ Ä¿³ÎÀÌ °áÁ¤ÇÏ´Â °Í À̹ǷΠÇ×»ó ¹ß»ýÇÏÁö ¾Ê´Â´Ù°í º¸ÀåÇÒ ¼ö´Â ¾ø´Ù.
µ¥µå¶ô ¿Ü¿¡ ½Ä»çÇϴ öÇÐÀÚ ¾ÖÇø´¿¡¼ µÎ ¸íÀÇ Ã¶ÇÐÀÚ°¡ µ¿½Ã¿¡ ½ºÆ½À» Àâ´Â °æ¿ìµµ ¹®Á¦°¡ ¹ß»ýÇϴµ¥ ÀÌ°ÍÀº ½ºÆ½À» Àâ´Â °ÍÀ»
¹¦»çÇÏ´Â µµ±¸ÀÇ µµ±¸ Á¦ÇÑÀÚ¸¦ synchronized·Î »ç¿ëÇÏ¸é ¹æÁöÇÒ ¼ö ÀÖ´Ù. synchronized·Î ¼±¾ðµÈ µµ±¸´Â ÇϳªÀÇ ¾²·¹µå°¡ ÀÌ ¹®¸ÆÀ»
¼öÇàÇÏ°Ô µÇ¸é ´Ù¸¥ ¾²·¹µå´Â ºí·ÏµÇ¾î ±â´Ù¸®´Ù°¡ ¸ÕÀú µé¾î°£ ¾²·¹µå°¡ ¼öÇàÀ» ³¡³»°í ¸®ÅÏÇÏ´Â ¼ø°£¿¡ ¼öÇàÀ» ½ÃÀÛ ÇÑ´Ù. Âü°í·Î
ÀÚ¹Ù´Â synchronized µµ±¸¸¦ ±¸ÇöÇϱâ À§Çؼ ¼Ö¶ó¸®½º¿¡¼´Â ¹ÂÅØ(Å©±â°¡ 1ÀÎ ¼¼¸¶Æ÷¾î¶ó°í »ý°¢ÇÒ ¼ö ÀÖ´Ù.) ¿À ºêÁ§Æ®, win32¿¡¼´Â
Å©¸®Æ¼Äà ¼½¼Ç(µ¿ÀÏ ÇÁ·Î¼¼½º ³»ÀÇ ¹ÂÅØÀ̶ó°í »ý°¢ÇÒ ¼ö ÀÖ´Ù.) ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÑ´Ù. ¼¼¸¶Æ÷¾î µîÀ» »ç¿ë ÇÏ¿© µ¿±âÈÇÏ´Â °ÍÀº C ȤÀº
C++ ÇÁ·Î±×·¥¿¡¼± ±î´Ù·Î¿î ºÎºÐÀÏ ¼ö¹Û¿¡ ¾ø´Âµ¥ ÀÚ¹Ù´Â À̵éÀ» synchronized ¿¹¾à¾î Çϳª·Î ÇØ°á ÇÒ ¼ö ÀÖµµ·Ï ¹è·ÁÇÑ °ÍÀÌ´Ù.
´ÙÀ½Àº °£´ÜÇÑ µ¿±âÈ ¿¹Á¦ÀÌ´Ù.
¡¡ÀÌ ¿¹Á¦ ÇÁ·Î±×·¥Àº µÎ °³ÀÇ ¾²·¹µå°¡ ÇϳªÀÇ ÆÄÀÏ¿¡ ÀÔÃâ·ÂÀ» ÇÒ ¶§ ¹ß»ýÇÏ´Â ¹®Á¦¸¦ ´Ù·é °ÍÀÌ´Ù. SeqTh read Ŭ·¡½ºÀÇ static µµ±¸ÀÎ
doSeq()´Â seqnofileÀ̶ó´Â À̸§ÀÇ ÆÄÀÏÀ» ÀÐ¾î ±× ³»¿ëÀÎ Á¤¼ö¸¦ Ãâ·ÂÇÏ°í ÇöÀç °ª¿¡ 1À» ´õÇÏ¿© ÆÄÀÏ¿¡ ¾²´Â ÀÏÀ» ½º¹« ¹ø ¹Ýº¹ÇÑ´Ù.
ÀÌ ÇÁ·Î±×·¥ÀÇ ½ÇÇà°á°ú´Â ´ÙÀ½°ú °°´Ù.
¡¡
Áï, µÎ ¾²·¹µå Áß ¸ÕÀú ¼öÇàµÈ ¾²·¹µå°¡ 0¿¡¼ 19±îÁö °ªÀ» ¾´ ´ÙÀ½ ´ÙÀ½ ¾²·¹µå´Â ¾Õ ¾²·¹µåÀÇ ¼öÇàÀÌ ³¡ ³¯ ¶§±îÁö ±â´Ù¸®´Ù°¡ ¾Õ
¾²·¹µå°¡ ÆÄÀÏ¿¡ ¾´ ¸¶Áö¸· °ªÀÎ 19¸¦ Àоîµé¿© ¼öÇàÀ» ÇÏ°Ô µÈ´Ù.
doSeq() µµ±¸°¡ ¸¸¾à synchronized·Î ¼±¾ðµÇÁö ¾Ê¾Ò´Ù¸é (½ÇÁ¦·Î synchronized¸¦ ÁÖ¼® ó¸®ÇÏ°í ÄÄÆÄÀÏÇÏ¿© ½ÇÇàÇغ¸±æ ¹Ù¶õ´Ù. ) µÎ
°³ÀÇ ¾²·¹µå°¡ °æÀïÀûÀ¸·Î ÆÄÀÏÀ» ÀÐ°í ¾²±â ¶§¹®¿¡ ÆÄÀÏ Á¢±Ù ÀÚü°¡ ¿¡·¯°¡ ³ª°Å³ª ¿ì¿¬È÷ Á¦´ë·Î ½ÇÇàµÇ´õ¶óµµ ±× °ªÀÌ ÀüÇô ¼ø¼¸¦
ÁöÅ°Áö ¾ÊÀ» °ÍÀÌ´Ù. ´ÙÀ½Àº synchronized¸¦ ÁÖ¼®Ã³¸®ÇÒ ¶§ÀÇ ÇÑ ½ÇÇà ¿¹ÀÌ´Ù.
ThreadTest3 ½ÇÇà °á°ú 2-synchronized¸¦ ÁÖ¼® ó¸®ÇÑ °æ¿ì
¡¡µÎ °³ÀÇ ¾²·¹µå°¡ ¼·Î °æÀïÀûÀ¸·Î ÆÄÀÏÀ» ÀÐ°í ¾²±â ¶§¹®¿¡ seqnoÀÇ °ªÀÌ °¢ ¾²·¹µåº°·Î ¼ø¼°¡ ¸ÂÁö ¾Ê °í °ªÀÌ ¾ûÄÑ °©ÀÚ±â seqno °ªÀÌ Å©°Ô Áõ°¡ÇÏ¿´´Ù.
À§ÀÇ ThreadTest3.java ¿¹Á¦ ÆÄÀÏÀ» »ìÆ캸¸é ÆÄÀÏ ÀÔÃâ·ÂÀ» ÇÏ´Â °ÍÀÌ ´«¿¡ ¶é °ÍÀÌ´Ù.
µð½ºÅ© ÆÄÀÏÀº ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀÓÀÇ·Î Á¶ÀÛÇÒ ¼ö ÀÖ´Â ÀÓÀÇ Á¢±Ù ÆÄÀÏ(Random Access File)À̱⠶§¹®¿¡ À§ÀÇ ¿¹Á¦Ã³·³
RandomAccessFile Ŭ·¡½º·Î ÆÄÀÏÀ» ó¸®Çϸé ÀÐ°í ¾²´Â °ÍÀÌ °£´ÜÇÏ´Ù.
Æ÷ÀÎÅ͸¦ ÀÓÀÇ·Î Á¶ÀÛÇÒ ¼ö ¾ø´Â ÀϹÝÀûÀÎ ½ºÆ®¸² ÀÔÃâ·ÂÀÇ °æ¿ì¿¡´Â java.io.InputStreamÀ̳ª java.io.OutputStream Ŭ·¡½º ÀνºÅϽº¸¦
»ý¼ºÇÏ¿© ÀÔÃâ·ÂÀ» ÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½Àº InputStream(OutputStream)¿¡¼ ÆÄ»ýµÈ Ŭ·¡½ºÀÎ FileInputStream(FileOutputStream) Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â °£´ÜÇÑ ÆÄÀÏ ÀÔ Ãâ·Â
ÇÁ·Î±×·¥ÀÌ´Ù. ÆÄÀÏ ½ºÆ®¸² Ŭ·¡½ºµéÀº ÀÓÀÇ Á¢±Ù ÆÄÀÏÀÌ ¾Æ´Ï±â ¶§¹®¿¡ Æ÷ÀÎÅ͸¦ Á¶ÀÛÇÏ´Â seek()°ú °°Àº µµ±¸°¡ ¾ø´Ù´Â Á¡À» Á¦¿ÜÇϸé
RandomAccessFile°ú °ÅÀÇ µ¿ÀÏÇÑ µµ±¸µéÀ» °¡Áö°í ÀÖ´Ù. ½ºÆ®¸²À» Á¶ÀÛÇÒ ¶§ ¸ÕÀú FileInputStream ÀνºÅϽº¸¦ »ý ¼ºÇÏ°í À̸¦ ÀÎÀÚ·Î
DataInputStream ÀνºÅϽº¸¦ »ý¼ºÇÏ¿© ½ÇÁ¦ ½ºÆ®¸² ÀÔ·Â Á¶ÀÛÀ» ÇàÇÏ´Â ¼ø¼¸¦ ´«¿©°Ü º¸¾ÆµÎÀÚ. ½ºÆ®¸² Ãâ ·ÂÀÇ °æ¿ì¿¡´Â ¸ÕÀú
FileOutputStream ÀνºÅϽº¸¦ »ý¼ºÇÏ°í À̸¦ ÀÎÀÚ·Î PrintStream ÀνºÅϽº(ȤÀº DataOutputStream ÀνºÅϽº) ¸¦ »ý¼ºÇÏ¿© ½ºÆ®¸²À»
Á¶ÀÛÇÑ´Ù.
<±×¸² > ½ºÆ®¸² ÀÔÃâ·Â °ü·Ã Ŭ·¡½º °èÃþ ±¸Á¶
¡¡
À§ÀÇ ¿¹Á¦´Â ÅؽºÆ® ¿ø½Ã ÆÄÀÏÀ» ÇÑ ÁÙ¾¿ ȸé Ãâ·ÂÀ» ÇÏ¸é¼ µ¿½Ã¿¡ ¸ñÀû ÆÄÀÏ·Î º¹»çÇÑ´Ù. ÇÏÁö¸¸ win32¿Í ¼Ö¶ó¸®½º ½Ã½ºÅÛÀº ÅؽºÆ®
ÆÄÀÏ¿¡¼ °³Çà ¹®ÀÚ¸¦ ´Ù·ç´Â ¹æ½ÄÀÌ ´Ù¸£¹Ç·Î ¿ÏÀüÈ÷ µ¿ÀÏÇÑ ÆÄÀÏ·Î º¹»çµÇÁö´Â ¾ÊÀ» °ÍÀÌ´Ù.
ÀÚ¹Ù¿¡¼ ¾ÖÇ÷¯ÄÉÀ̼ǰú ´Þ¸® ¾ÖÇø´Àº ¼¹ö·ÎºÎÅÍÀÇ ÀÔÃâ·Â¿¡ Á¦ÇÑÀÌ ¸¹´Ù. ¾ÖÇø´ÀÌ Å¬¶óÀ̾ðÆ®ÀÇ µð½ºÅ©¿¡ ¾²±â¸¦ ÇÒ ¼ö ÀÖ ´Â ¹æ¹ýÀº Ŭ¶óÀ̾ðÆ®ÀÇ »ç¿ëÀÚ°¡ ÇØ´ç Ŭ·¡½º ÆÄÀÏÀ» Á÷Á¢ ÀÚ½ÅÀÇ µð½ºÅ©¿¡ ¼³Ä¡ÇÏ¿© Á¢±Ù ±ÇÇÑÀ» ¼öÁ¤ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù.¡¡¡¡