Synchronized快

[java] view plain copy
 
  1. /* 
  2.  
  3. JAVA对于多线程的安全问题提供了专业的解决方式 
  4.  
  5. 就是同步代码块 
  6.  
  7. synchronized(对象)//这个对象可以为任意对象 
  8.     需要被同步的代码 
  9.  
  10. 对象如同锁,持有锁的线程可以在同步中执行 
  11. 没持有锁的线程即使获取CPU的执行权,也进不去 
  12.  
  13.  
  14. 同步的前提: 
  15. 1,必须要有两个或者两个以上的线程 
  16. 2,必须是多个线程使用同一个锁 
  17.      
  18. 必须保证同步中只能有一个线程在运行 
  19.  
  20. 好处:解决了多线程的安全问题 
  21.  
  22. 弊端:多个线程需要判断锁,较为消耗资源 
  23. */  
  24.   
  25. class Tick implements Runnable  
  26. {  
  27.     private int tick = 50;  
  28.   
  29.     Object obj = new Object();//申请一个对象  
  30.   
  31.     public void run()  
  32.     {  
  33.   
  34.         while(true)  
  35.         {  
  36.             synchronized(obj)  
  37.             {  
  38.                 if(tick > 0)  
  39.                 {  
  40.                     //try{Thread.sleep(40);}catch(Exception e){}  
  41.                     System.out.println( Thread.currentThread().getName() + " sail --" + tick--);  
  42.                 }     
  43.             }  
  44.         }  
  45.     }  
  46. }  
  47.   
  48. class TickDemo  
  49. {  
  50.     public static void main(String []args)  
  51.     {  
  52.         Tick t = new Tick();  
  53.   
  54.         Thread t1 = new Thread(t);  
  55.         Thread t2 = new Thread(t);  
  56.         Thread t3 = new Thread(t);  
  57.         Thread t4 = new Thread(t);  
  58.   
  59.         t1.start();  
  60.         t2.start();  
  61.         t3.start();  
  62.         t4.start();  
  63.   
  64.     }  
  65. }  
posted @ 2016-12-05 22:36  强者心  阅读(190)  评论(0编辑  收藏  举报