黑马程序员技术交流社区

标题: Synchronized的用法? [打印本页]

作者: 王德云    时间: 2011-11-10 21:17
标题: Synchronized的用法?
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.         }
复制代码

作者: 石宗银    时间: 2011-11-10 21:26
用在方法还是线程同步的 应用。。。。多人(即多个线程)来访问,同时操作了该方法,,只能有一人(一个线程)能进入 方法中执行,,
其他的只有等前者执行完,,才能随机有一个进入执行,,再然后 与面类似,,,,,,  这就是同步 互斥 锁  synchronized
作者: 刘一扬    时间: 2011-11-10 21:29
Synchronized 就是表示方法加锁,当某个线程对在方法中没有返回时,不允许其他线程再运行此方法
作者: 郝亚平    时间: 2011-11-10 21:41
Java中开始使用多线程,实在太好了,但是同时也意味着,多线程之间抢占cpu,使得你得去面对多线程引发的潜在安全隐患问题。
Sun公司为了解决这个问题。就引入了Synchronized关键字。同步线程对于共享资源的访问。(此关键字应该就多用在这个用途吧。。好像没其他了。)
其实现机理是采用锁的机制。一旦一个线程进入到线程的代码执行状态,立马就锁上了,别的线程就无法获取到线程代码的
执行权。一旦执行完毕线程代码,就重新打开锁。这样子就保证了各个线程执行线程代码的正常性,也就直接避免了引发错误的安全问题。

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2