栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线程的安全问题--同步代码块同步方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程的安全问题--同步代码块同步方法

1.问题:卖票过程中,出现重票、错票–>出现了线程的安全问题
2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来操作车票
3.如何解决:当一个线程A在操作共享数据ticket时,其他线程不能参与进来,直到线程A操作完之后,其他线程才可以操作共享数据ticket, 这种情况,即使线程A出现阻塞,也不能被改变
4.在Java中,我们通过同步机制,来改变线程的安全问题

方式一:同步代码块
synchronized(同步监视器){
    需要被同步的代码
}
声明:

1.操作共享数据的代码就是需要被同步的代码
2.共享数据:多个线程共同操作的变量,比如:ticket就是
3.同步监视器,俗称:锁 任何一个类的对象都可以充当锁
要求:多个线程必须要共用同一把锁(只声明一个对象)

补充,在实现Runnable接口创建多线程的方式中,我们可以考虑使用this充当同步监视器。

方式二:同步方法
如果操作共享数据的代码完整的声明在一个方法中,我们不妨将此方法声明同步的。

5.同步的方式,解决了线程的安全问题。-----好处
操作同步代码时,只能有一个线程参与,其他线程等待,相当于是一个单线程的过程。–坏处

关于同步方法的总结
  • 1.同步方法仍涉及到同步监视器,只是不需要我们声明
  • 2.非静态的同步方法,同步监视器是this
  • 静态的同步方法,同步监视器是 当前类本身
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号