スレッド:synchronizedメソッドsynchronizedメソッド



  
  
  
  
  1. class Thread1 extends Thread 
  2.     private MasterCard mc;// mc  
  3.      
  4.     public Thread1(MasterCard mc) 
  5.     { 
  6.         this.mc = mc; 
  7.     } 
  8.      
  9.     public void run() 
  10.     { 
  11.         mc.charge1000();// synchronized , mc  
  12.       //  mc.charge();// run mc  
  13.     } 
  14.  
  15. class Thread2 extends Thread 
  16.     private MasterCard mc; 
  17.      
  18.     public Thread2(MasterCard mc) 
  19.     { 
  20.         this.mc = mc; 
  21.     } 
  22.      
  23.     public void run() 
  24.     { 
  25.         mc.printMoney(); 
  26.         mc.charge2000(); 
  27.     } 
  28. public class MasterCard 
  29.     int money = 10000
  30.     public synchronized void charge2000()// ,  
  31.     { 
  32. //        synchronized(this) 
  33. //        { 
  34.             this.money -= 2000
  35.             System.out.println(" 2000 :" + this.money); 
  36. //        } 
  37.     } 
  38.      
  39.     public void printMoney() 
  40.     { 
  41.         System.out.println(" 2000 :" + this.money); 
  42.     } 
  43.      
  44.     public synchronized void charge1000() 
  45.     { 
  46. //        synchronized(this) 
  47. //        { 
  48.             this.money -= 1000
  49.             System.out.println(" 1000 :" + this.money); 
  50. //        } 
  51.     } 
  52.      
  53.     public static void main(String[] args) 
  54.     { 
  55.         MasterCard mc = new MasterCard(); 
  56.         Thread1 t1 = new Thread1(mc); 
  57.         t1.start(); 
  58.         Thread2 t2 = new Thread2(mc); 
  59.         t2.start(); 
  60.          
  61.     } 
  62.      
  63.     public void charge() 
  64.     { 
  65.         synchronized (this
  66.         { 
  67.             System.out.println(" 1000 :" + money); 
  68.             money -= 1000
  69.             System.out.println(" :" + money); 
  70.         } 
  71.     } 
  72.      
  73.      
  74.      
  75.     // public void charge() 
  76.     // { 
  77.     // System.out.println(" :" + money); 
  78.     // money -= 1000; 
  79.     // System.out.println(" :" + money); 
  80.     // } 
  81.     // 
  82.      

本文は“空は痕跡がありませんが私は飛んだことがあります”のブログから出て、転載して作者と連絡してください!