¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / Java / ¥¹¥ì¥Ã¥É¥×¥í¥°¥é¥ß¥ó¥°

¤Ê¤ó¤È¤Ê¤¯¡¢¸å²ó¤·¤Ë¤·¤Æ¤­¤¿¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥×¥í¥°¥é¥ß¥ó¥°¤Ê¤ó¤Ç¤¹¤¬¡¢SWT¤ÎÊÙ¶¯¤Ê¤ÉGUI¥×¥í¥°¥é¥ß¥ó¥°¤ò¤ä¤Ã¤Æ¤ë¤È¡¢¤É¤¦¤·¤Æ¤âÃ챤¬É¬ÍפÀ¤Ê¤Ã¤Æ»×¤¨¤Æ¤­¤Þ¤·¤Æ¡¢¤Á¤ç¤Ã¤ÈÊÙ¶¯Ãæ¤Ç¤¹¡£

¤Þ¤ÀÁ´Á³¤ï¤«¤Ã¤Æ¤Ê¤¤¤ó¤Ç¤¹¤¬¡¢¤¤¤í¤¤¤í¥á¥â¡£

InterruptedException? ¤¬È¯À¸¤¹¤ë¥¿¥¤¥ß¥ó¥°

ÅÓÃæ¡£

synchronized¤Ë¤¹¤ë¤³¤È¤Ç¡¢¤É¤³¤¬Æ±´ü²½¤µ¤ì¤ë¤Î¤«¡£

²¼¤Î¥¯¥é¥¹¤Ïsynchronized¤Î¥á¥½¥Ã¥É¤È¤½¤¦¤Ç¤Ê¤¤¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£

public class Data {
 public synchronized void syncExecute() {
  System.out.println("syncExecute¼Â¹ÔÃæ......");
  try {
   Thread.sleep(3000);
  } catch (InterruptedException e) {
  }

  System.out.println("syncExecute¼Â¹Ô½ªÎ»");
 }

 public void execute() {
  System.out.println("execute¼Â¹Ô");
 }
}

¤½¤ì¤¾¤ì¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¥¹¥ì¥Ã¥É¤¬¤¢¤ë¤È¤·¤Þ¤¹¡£

class SyncThread extends Thread {
 private Data data;
 public SyncThread(Data data) {
  this.data = data;
 }
 public void run() {
  data.syncExecute();
 }
}

class TestThread extends Thread {
 private Data data;
 public TestThread(Data data) {
  this.data = data;
 }
 public void run() {
  data.execute();
 }
}

¤³¤Î¥¹¥ì¥Ã¥É¤òƱ»þ¤Ë¼Â¹Ô¤¹¤ë¤È¡¢

public class ThreadTest{
 public static void main(String[] args) {
  System.out.println("Start.");

  Data data = new Data();
  new SyncThread(data).start();
  new TestThread(data).start();

  System.out.println("End.");
 }
}

·ë²Ì¤Ï

Start.
End.
syncExecute¼Â¹ÔÃæ......
execute¼Â¹Ô      <- syncExecute¼Â¹ÔÃæ¤Ë¤â¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë
syncExecute¼Â¹Ô½ªÎ»

¤Ã¤Æ¤Ê¤Ã¤Æ¡¢synchronized ¤Ê¥á¥½¥Ã¥É¤ò¼Â¹ÔÃæ¤Ë¤â¤½¤Î¾¤Î¥á¥½¥Ã¥É¤Ï¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ã¤Æ¤³¤È¤ÏÊ̤Υ¹¥ì¥Ã¥É¤¬¤¢¤ë¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥â¥Ë¥¿¤ò¼èÆÀ¤·¤Æ¤¤¤ë»þ¤â¡¢¡Ösynchronized¤Ç¤Ê¤¤¡×¾¤Î¥á¥½¥Ã¥É¤Ï¼Â¹Ô¤µ¤ì¤ë¤Ã¤Æ»ö¤Ê¤ó¤Ç¤¹¤Í¡£

¤ó¤Ç¤Ï¡¢Àè¤Û¤É¤Î¥á¥½¥Ã¥É¤ò

   public void execute() {
-> public synchronized void execute() {

¤ËÊѹ¹¤¹¤ë¤È¡¢

Start.
End.
syncExecute¼Â¹ÔÃæ......
syncExecute¼Â¹Ô½ªÎ»
execute¼Â¹Ô

¤È¤Ê¤ê¡¢Æ±»þ¤Ë¤Ï¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤¢¤ë°ì»þÅÀ¤Ç¡¢¤Ò¤È¤Ä¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ËÂФ·¤Æ¼Â¹Ô¤µ¤ì¤Æ¤¤¤ësynchronized ¥á¥½¥Ã¥É¤Ï¤Ò¤È¤Ä¤Ç¤¢¤ë¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹*1¡£¤µ¤é¤ËThread#sleep()¤·¤Æ¤â¥â¥Ë¥¿¤Ï²òÊü¤·¤Ê¤¤¤È¤¤¤¦¤³¤È¤âʬ¤«¤ê¤Þ¤·¤¿*2¡£

¤Þ¤È¤á¤ë¤È¡¢

synchronized¥á¥½¥Ã¥É¤Ï¥â¥Ë¥¿¤ò¤È¤é¤Ê¤¤¤È¼Â¹Ô¤Ç¤­¤Ê¤¤¡£

¤Ã¤Æ¤³¤È¤Ç¤¹¤Í*3¡£¤Ê¤ó¤À¤«Åö¤¿¤êÁ°¤Î·ëÏÀ¤Ë¹Ô¤­Ã夭¤Þ¤·¤¿¡£¡£

Thread#sleep()¤ÈObject#wait()

¾å¤Î·ëÏÀ¤è¤ê¡¢

Thread#sleep() ¤·¤¿¤È¤­¤Ë¥â¥Ë¥¿¤Ï²òÊü¤·¤Ê¤¤
Object#wait() ¤·¤¿¤È¤­¤Ë¥â¥Ë¥¿¤Ï²òÊü¤µ¤ì¤ë

¤È¤Ê¤ê¤Þ¤¹¡£

¤½¤â¤½¤âThread#sleep()¤Ï¥â¥Ë¥¿¤ò¼è¤é¤Ê¤¯¤Æ¤â¼Â¹Ô²Äǽ¤Ê¤Î¤Ç¡¢¥â¥Ë¥¿¤Î²òÊü¤â²¿¤â¤Ê¤¤¤ï¤±¤Ç¤¹¡£¤Þ¤¿Object#wait()¤ò¸Æ¤Ö¥¹¥ì¥Ã¥É¤Ï¤½¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥â¥Ë¥¿¤ò¼èÆÀ¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢wait()¤ò¸Æ¤Ó½Ð¤·¤¿½Ö´Ö¤½¤Î¥¹¥ì¥Ã¥É¤Ï¥À¥ó¥Þ¥ê¤Ë¤Ê¤ë¤ï¤±¤Ç¡¢¤½¤³¤Ç¥â¥Ë¥¿¤ò²òÊü¤·¤Ê¤¤¤È¡¢Ã¯¤â¤½¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ÎnotfyAll()¤ò¸Æ¤Ù¤Ê¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£


¤³¤Îµ­»ö¤Ï

ÁªÂò»è Åêɼ
¤ª¤â¤·¤í¤«¤Ã¤¿ 12  
¤½¤¦¤Ç¤â¤Ê¤¤ 1  
  • ¡Ö¤Ò¤È¤Ä¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ËÂФ·¤Æ¼Â¹Ô¤µ¤ì¤Æ¤¤¤ësynchronized ¥á¥½¥Ã¥É¤Ï¤Ò¤È¤Ä¤Ç¤¢¤ë¡×¤È¤¤¤¦¸À¤¤Êý¤è¤ê¤â¡¢synchronized(hoge)Æâ¤Î½èÍý¤Ï°ú¿ôhoge¤È¤¤¤¦¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥â¥Ë¥¿¤ò¼èÆÀ¤·¤¿¥¹¥ì¥Ã¥É¤·¤«¼Â¹Ô¤Ç¤­¤Ê¤¤(=synchronizedÆâ¤Ïhoge¤ËÂФ·¤Æ°ì¥¹¥ì¥Ã¥É¤Ç¡¢Ê̤Υ¹¥ì¥Ã¥É¤ÏÂÔ¤Á¾õÂÖ)¤Ã¤Æ¤³¤È¤Ç¤¹¤Í -- ¤­¤Î? 2008-01-21 (·î) 20:57:10

¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / Java / ¥¹¥ì¥Ã¥É¥×¥í¥°¥é¥ß¥ó¥°

¸½ºß¤Î¥¢¥¯¥»¥¹:4821


*1 ¥¤¥ó¥¹¥¿¥ó¥¹¤´¤È¤Ç¤¹¤è
*2 ²òÊü¤¹¤ë¤È¤·¤¿¤é¡¢sleep¤·¤¿½Ö´ÖÊ̤Υ᥽¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤Ï¤º¡£µÕ¤Ëwait()¥á¥½¥Ã¥É¤Î¾ì¹ç¤Ï¡¢¥â¥Ë¥¿¤Ï²òÊü¤µ¤ì¤Þ¤¹¡£
*3 ¤¹¤Ê¤ï¤Á¤¢¤ë¥¤¥ó¥¹¥¿¥ó¥¹¤ËÂФ·¤Æ¡¢¼Â¹Ô¤µ¤ì¤Æ¤¤¤ësynchronized¥á¥½¥Ã¥É¤Ï°ì¤Ä¤Ç¤¢¤ë¡¢¤«

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2012-01-25 (¿å) 16:54:16 (115d)