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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德云 金牌黑马   /  2011-11-10 21:17  /  2640 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Synchronized主要用在线程的同步,还会用在别的地方吗?
Synchronized如果用在方法上,怎么去理解呢?
例如:
  1. class Person {
  2.         private String name = "李四";
  3.         private String sex = "女";

  4.         public synchronized void set(String name, String sex) {
  5.                 this.name = name;
  6.                 this.sex = sex;
  7.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
用在方法还是线程同步的 应用。。。。多人(即多个线程)来访问,同时操作了该方法,,只能有一人(一个线程)能进入 方法中执行,,
其他的只有等前者执行完,,才能随机有一个进入执行,,再然后 与面类似,,,,,,  这就是同步 互斥 锁  synchronized

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Synchronized 就是表示方法加锁,当某个线程对在方法中没有返回时,不允许其他线程再运行此方法
回复 使用道具 举报
Java中开始使用多线程,实在太好了,但是同时也意味着,多线程之间抢占cpu,使得你得去面对多线程引发的潜在安全隐患问题。
Sun公司为了解决这个问题。就引入了Synchronized关键字。同步线程对于共享资源的访问。(此关键字应该就多用在这个用途吧。。好像没其他了。)
其实现机理是采用锁的机制。一旦一个线程进入到线程的代码执行状态,立马就锁上了,别的线程就无法获取到线程代码的
执行权。一旦执行完毕线程代码,就重新打开锁。这样子就保证了各个线程执行线程代码的正常性,也就直接避免了引发错误的安全问题。

线程同步方法时,其实本质就是线程同步代码块的延伸和改进,只是把线程同步代码块单独给提炼出来,到一个独立的方法块中加Synchronized,就成同步方法了 。
代码看上去会更加整洁。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马