黑马程序员技术交流社区
标题: 多线程中同步代码块的问题 [打印本页]
作者: H-Deka 时间: 2014-3-27 10:05
标题: 多线程中同步代码块的问题
本帖最后由 H-Deka 于 2014-3-28 10:29 编辑
多线程中还要考虑线程安全的问题,这就要使用同步技术,使用同步代码块是synchronized(obj){ .........} 的obj怎么设才最合适
作者: yanzhendong 时间: 2014-3-27 10:10
只要obj对象能被多线程访问就行了,需要注意的是几个需要同步的线程要访问同一个obj对象,这样才能同步。
作者: Up↑Lee↗ 时间: 2014-3-27 10:15
Java对于多线程的安全问题提供了专业的解决方式,就是同步代码块。
synchronized(对象)
{
需要被同步的代码
}
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。
你可以直接用synchronized来修饰一个方法,
如:
public void synchronized printXX(){
........
}
这样,只在一个线和进个方法,那么此 “类”(方法所在的类) 就会被"上锁",其它线程不能访问。直到这个线程释放资源为止。
还可以将要实现同步的代码写到一个synchronized块里面,如:synchronized(obj){
......
}
注意,此处的obj是一个对象,你可以Object obj = new Object(); 也可以用this来代替,表示当前对象!
作者: xiaochen33520 时间: 2014-3-27 17:11
this.getClass 或者 this
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |