社区
Java SE
帖子详情
sycronized 的工作原理
duoyu1991
2014-10-27 09:36:44
如果把一个线程给sycronized 的了 会有什么后果
最好科普一下这的具体的是西安原理
...全文
493
7
打赏
收藏
sycronized 的工作原理
如果把一个线程给sycronized 的了 会有什么后果 最好科普一下这的具体的是西安原理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大数据小白
2014-11-24
打赏
举报
回复
Java语言调用的线程实际上是操作系统的线程,由操作系统控制单元开启。操作系统通过PV信号量实现进程间的同步与互斥操作,synchronized应该是对这个进行了封装。但最底层一定是P V信号量对线程同步与互斥的控制。
duoyu1991
2014-11-23
打赏
举报
回复
恩恩额 以了解 谢谢
965攻城狮
2014-10-31
打赏
举报
回复
synchronized包括对象同步和类同步,是对对象或者类锁定,同意#2.
seraphim_houwei
2014-10-30
打赏
举报
回复
如果把一个线程 thread A 给sycronized,那么在这个线程执行完毕 sycronized 方法 或者 sycronized 块之前,其它线程如果想访问 sycronized 方法 或者 sycronized 块 的时候,就处于等待状态,等待 thread A 执行完毕之后,释放锁。其它线程再竞争这个锁,哪个线程首先获得锁,哪个线程就执行 sycronized 方法 或者 sycronized 块。
Mr_JieLQ
2014-10-29
打赏
举报
回复
sycronized是为了保持多线程通信共享信息的原子性,具体原理可追溯到jvm,甚至操作系统
lliiqiang
2014-10-28
打赏
举报
回复
锁定对象,别的线程synchronized该对象必须等该线程synchronized完该对象.
shixitong
2014-10-27
打赏
举报
回复
http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html
sy
cron
ized
的底层原理
当
sy
nchron
ized
关键字用在代码块时,会先获取monitorz标记,只有获取monitorz关键字时,才可以对代码块中的对象进行操作,若该monitorz被其他线程持有时,会阻塞要获取该代码块的monitorz的所有线程,当该线程执行完毕代码块时,计数器变成零,才有机会获取该monitorz。而monitorz存在于对象头中,对象分为对象头,实例数据,和对其填充,对象头又分为monitor、类型指针和数组大小(只有数组才会有,因为jvm会根据元数据获取对象大小,而数据不行,所以要额外标记。
sy
nchron
ized
原理
1、
sy
nchron
ized
的作用 为了避免临界区的竞态条件发生,有多种手段可以达到目的。 阻塞式的解决方案:
sy
nchron
ized
,Lock 非阻塞式的解决方案:原子变量
sy
nchron
ized
,即俗称的【对象锁】,它采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。这样就能保证拥有锁的线程可以安全的执行临界区内的代码,不用担心线程上下文切换。
sy
nchron
ized
的三个作用 原子性:确保线程互斥的访问同步代码 可见性:保证共享变量
一篇就够,
sy
nchron
ized
原理详解
sy
nchron
ized
详解 在多线程同时访问一个共享变量时,volatile是一个轻量级的解决方案,但是volatile只能修饰一个变量并且不保证原子性。在Java中还提供了两种方式实现同步互斥访问:
sy
nchron
ized
和Lock 其实这些本质上就是加锁, 加锁目的:序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问) 不过有一点需要区别的是:当多个线程执行一个方法时,该方法内部的局部变量并不是临界资源,因为这些局部变量是在每个线程的 私有栈中,因此不具有共享性,不会导致线程安全
Sy
chron
ized
的原理,品如和世贤~
首先
Sy
chron
ized
的具体实现实在jvm下具体实现的,
Sy
chron
ized
并不是单纯的加锁,因为锁是分为很多种类型的,在不同的场景下需要不同的锁,因此
Sy
chron
ized
在jdk1.8里实现了多种情景下的加锁。 1.在最开始对一段程序进行加锁的时候使用的是乐观锁,所谓乐观锁就是认为该锁发生冲突的概率低,如果发现该锁的冲突概率比较高,就会自动转为悲观锁 2.
Sy
chron
ized
不是读写锁(具体的我也暂时没搞懂)。 3.
Sy
chron
ized
开始的时候是轻量锁,如果锁被持有时间过长会转换为重量
面试总结
java基础 1.线程池 1 线程池的几个参数参数及其作用 》2线程池怎样中的线程怎样处理异常 》3线程池中的线程怎样终止的 2.ThreadLocal的实现和原理以缺陷 3.HashMap的实现原理,扩容原理 4.currentHashMap的实现原理,以及put操作的大致流程 5.线程的几种状态 6.
sy
cron
ized
关键字 7.volitle 关键字 8retrrentLock 以及他的加锁过程 9.java内存模型 10 内存的分类 11 垃圾回收算法 12 垃圾收集器 cms和g1问的多,主
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章