A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何志超 初级黑马   /  2015-5-9 19:33  /  5167 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
`多线程的时候如何保证线程安全?

最佳答案

查看完整内容

1.将整个类加锁 (代码为synchronized(this)) 2.定义一个object,访问某些相关变量是,对该对象加锁(代码为synchronized(lockobj))。

11 个回复

倒序浏览
1.将整个类加锁 (代码为synchronized(this))
2.定义一个object,访问某些相关变量是,对该对象加锁(代码为synchronized(lockobj))。

评分

参与人数 1黑马币 +30 收起 理由
何志超 + 30 赞一个!

查看全部评分

回复 使用道具 举报

1.将整个类加锁 (代码为synchronized(this))
2.定义一个object,访问某些相关变量是,对该对象加锁(代码为synchronized(lockobj))。
回复 使用道具 举报
可以用同步代码块或者同步函数
回复 使用道具 举报
保证多线程安全需要使用锁,在同步里包括同步代码块,同步非静态函数,以及同步非静态函数,而如果同时使用时就需要彻底理解每个锁的不同,既要防止锁不住,又要防止死锁。
同步代码块中的锁可以自定义,同步非静态函数中是this,同步静态函数是本类的字节码文件对象。
回复 使用道具 举报
必须是用锁,同步代码块,但是注意别锁死,可以多看看老师的视频和代码,比较详细的
回复 使用道具 举报
将run()方法中被共同执行的代码块用同一个对象锁lock(obj)锁住,obj是指多个线程共享的锁
回复 使用道具 举报
线程安全问题的解决方案:
                A:同步代码块
                        synchronized(锁对象)
                        {
                                被同步的代码
                        }
                B:同步方法
                        把synchronized加在方法上。
回复 使用道具 举报
同步代码块或同步函数
回复 使用道具 举报
给多个线程共同执行的代码加锁:synchronized(对象){需要被同步的代码块}
回复 使用道具 举报
yufuhong 发表于 2015-5-10 10:30
线程安全问题的解决方案:
                A:同步代码块
                        synchronized(锁对象)

还有别的方法吗?
回复 使用道具 举报
要么是同步代码块,要么是同步函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马