注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

王金龙 廊坊师范学院信息技术提高班十二期

习惯决定性格,性格决定命运!

 
 
 

日志

 
 

【并发编程】——线程安全-类锁、锁的同步,异步  

2018-04-22 22:16:55|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
类锁
【并发编程】——线程安全-类锁、锁的同步yiibu - 12期 王金龙 - 王金龙 廊坊师范学院信息技术提高班十二期

 多线程的情况下,多个对象就会有多把锁。

demo

【并发编程】——线程安全-类锁、锁的同步yiibu - 12期 王金龙 - 王金龙 廊坊师范学院信息技术提高班十二期

解释:两个线程分别得到两个对象的锁 。不冲突。分别执行自己的。它俩没任何关系所以对应的结果如上所示。

 


 如果需要执行完这个线程之后,需要等待他执行完,第二个再开始执行,:

如果想要当前进程执行完后,才允许其他进程执行。方法:方法和变量上都加入static关键字。表示在静态的方法上,加synchronized,获得的锁就是类级别上的锁,那么实例化出多少对象,都没有任何关联关系。也就是a执行完之后,b才能执行。t1t2线程就会有先后顺序。

【并发编程】——线程安全-类锁、锁的同步yiibu - 12期 王金龙 - 王金龙 廊坊师范学院信息技术提高班十二期

 t1t2线程有先后顺序了。


锁同步与锁异步

【并发编程】——线程安全-类锁、锁的同步yiibu - 12期 王金龙 - 王金龙 廊坊师范学院信息技术提高班十二期

Class中的两个方法p1p2p1synchronized修饰,就是同步的。p2没有被synchronized修饰,就是异步的。

同步异步的区别:多个线程访问方法p1时,需要等待,等第一个线程执行完后第二个才能进来。多个线程去访问没有被synchronized修饰的方法p2时,不用等待,并发执行。


demo3:


t1t2两个线程是一起打印的,4st1就执行完了。当前线程都能访问method1method2的,如果synchronized加入到method12()上,打印结果:先打印t14s后才打印t2,解释:

当前只有mo一个实例化对象,当调用method1()时,看到被synchronized修饰,就会拿到这个对象的锁,第二个再尝试获得锁肯定就不行了,需等待t1锁执行完释放后,才能获得这把锁。


【并发编程】——线程安全-类锁、锁的同步yiibu - 12期 王金龙 - 王金龙 廊坊师范学院信息技术提高班十二期

 

 

 

  评论这张
 
阅读(4)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018