A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 弘一 中级黑马   /  2013-12-17 17:17  /  1039 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问synchronized关键字是有什么用的?请写一个小程序让我了解一下

评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

4 个回复

倒序浏览
线程安全的关键字,你这个问题太无语了,自己看毕老师第12天的视频吧!“毛主席说过,没有调查就没有发言权!”
回复 使用道具 举报
  1. class Ticket implements Runnable  
  2. {  
  3.     private int tick = 100;  
  4.     Object obj = new Object();  
  5.     public void run()  
  6.     {  
  7.         while(true)  
  8.         {  
  9.             synchronized(obj)  
  10.             {  
  11.                 if(tick > 0)  
  12.                 {  
  13.                     try{Thread.sleep(10);} catch(Exception e){}  //由于等待时间过长,有的线程进来后会等待,当等待的线程  
  14.                     System.out.println(Thread.currentThread().getName()+"sale:-----"+tick--);//都获取执行资格后都执行就  
  15.                 }                                                                            //容易出现安全问题;  
  16.             }  
  17.         }  
  18.      }  
  19. }
复制代码


synchronized是用来解决线程安全问题的。
当有一个线程在执行Synchronized中的代码时,其他线程就进不去了,只有当前线程执行完毕,释放了锁(上面的obj就相当于一个锁)。其他线程才能够进来!

使用方法:    synchronized(对象)

                      {

                             需要被同步的代码;

    }


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
提示: 该帖被管理员或版主屏蔽
签名被屏蔽
回复 使用道具 举报
多看,多问,多学!

这样你一定会收获很多,已经有人给你写代码了,我就不写了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马