黑马程序员技术交流社区
标题:
多线程的同步代码块问题
[打印本页]
作者:
黄云南
时间:
2012-3-23 01:39
标题:
多线程的同步代码块问题
Object obj=new Object();
synchronized(obj)
{
需要被同步的代码,
}
复制代码
同步代码块中传入的对像相当于一个锁,谁能告诉我锁实现同步的原理啊!
作者:
贠(yun)靖
时间:
2012-3-23 04:47
本帖最后由 贠(yun)靖 于 2012-3-23 04:52 编辑
这问的太深了吧? 能看懂它的源代码就水平就不错了 搞清楚最底层的原理 这个难度对现在的我们来说太大了
我只知道 对象所 也就是参数对象 当一个线程进来之前 它是某种状态 而这种状态时允许线程进来的
当线程进来后 系统会自动改变这种状态 改变后 其他线程是进不来的 毕老师假设的是 -1和0 都是一样的道理
至于具体怎么实现的 就不知道了
作者:
陈从宾
时间:
2012-3-23 06:48
我知道一种Java偏向锁定的原理,不知是否有帮助:
偏向锁,顾名思义,它会偏向于第一个访问锁的线程,如果在接下来的运行过程中,该锁没有被其他的线程访问,则持有偏向锁的线程将永远不需要触发同步。如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线程会被挂起,JVM会尝试消除它身上的偏向锁,将锁恢复到标准的轻量级锁。(偏向锁只能在单线程下起作用)
作者:
张锦萍
时间:
2012-3-23 09:14
01.Object obj=new Object();
02.synchronized(obj)
03.{
04. 需要被同步的代码,
05.}
那个obj就是同步监视器,当线程执行同步代码块之前,必须获得对同步监视器的锁定,任何时刻只有一条线程可以获得对同步监视器的锁定,当同步代码块执行结束后,该线程自然释放对该同步监视器的锁定。这是它大概的原理,置于它怎样实现的锁定和释放锁定的功能,这就是底层的实现了,我们现在还不需要知道,我们只是用别人提供的工具,置于这工具怎么造出来的,我们又不是做工具的,就不用关心了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2