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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© H-Deka 中级黑马   /  2014-3-27 10:05  /  1354 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 H-Deka 于 2014-3-28 10:29 编辑

多线程中还要考虑线程安全的问题,这就要使用同步技术,使用同步代码块是synchronized(obj){  .........} 的obj怎么设才最合适



评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

3 个回复

倒序浏览
只要obj对象能被多线程访问就行了,需要注意的是几个需要同步的线程要访问同一个obj对象,这样才能同步。
回复 使用道具 举报
Java对于多线程的安全问题提供了专业的解决方式,就是同步代码块。
synchronized(对象)
{
        需要被同步的代码
}
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。


你可以直接用synchronized来修饰一个方法,
如:
public void synchronized printXX(){
........
}
这样,只在一个线和进个方法,那么此 ”(方法所在的类) 就会被"上锁",其它线程不能访问。直到这个线程释放资源为止。
还可以将要实现同步的代码写到一个synchronized块里面,如:synchronized(obj){
......
}
注意,此处的obj是一个对象,你可以Object obj = new Object(); 也可以用this来代替,表示当前对象!



评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
this.getClass 或者 this
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马