For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
锁的应用在线程安全领域是有非常重要的作用的,下面我们就一起来了解一下,java编程常见锁的类型与应用方法分析。
1.什么是是锁?
锁就可以实现将并发变成串行的效果
行锁、表锁
2.什么是互斥锁?
互斥锁:对共享数据进行锁定,保证同一时刻只能有一个线程去操作。
互斥锁是多个线程一起去抢,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。
3.为什么要使用互斥锁?
通过执行结果可以地址互斥锁能够保证多个线程访问共享数据不会出现数据错误问题
操作同一份数据不能并发,并发情况下操作同一份数据极其容易造成数据错乱
互斥锁对共享数据进行锁定,保证同一时刻只能有一个线程去操作。
4.常见问题
问题:并发情况下操作同一份数据极其容易造成数据错乱
解决措施:将并发变成串行虽然降低了效率但是提升了数据的安全
5.注意
使用锁的注意事项:
在主进程中产生交由子进程使用
1.一定要在需要的地方加锁千万不要随意加
2.不要轻易的使用锁(死锁现象)
6.Lock模块
Lock变量,这个变量本质上是一个函数,通过调用这个函数可以获取一把互斥锁
7.互斥锁(模拟多人抢票)
买票系统流程图
加上互斥锁多任务瞬间变成单任务,性能会下降,也就是说同一时刻只能有一个线程去执行
8.总结(抢票系统)解析
acquire和release方法之间的代码同一时刻只能有一个线程去操作
如果在调用acquire方法的时候其他线程已经使用了这个互斥锁,那么此时acquire方法会堵塞,直到这个互斥锁释放后才能再次上锁。
提示:加上互斥锁,那个线程抢到这个锁我们决定不了,那线程抢到锁那个线程先执行,没有抢到的线程需要等待
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。