关于多线程编程的讨论,请高手们展开来讨论一下
对于共享资源(文件、数据库的操作)的竞争问题,我想通过synchronized来解决。
但是我有几个疑惑的地方,请诸位打哥斧正!
Synchronized又有两个级别。当我将一个方法仅仅设为synchronized时,那是对象级的"锁",虽然一个对象的synchronized方法不可同时调用,却可以同时调用不同对象的同一个synchronized方法。所以这样做还没完全解决问题,因为两个用户(各有自己的OBJ对象)可以同时调用A方法同时操作共享资源。当我将A方法设为static synchronized时,则是类级的"锁"。类包含的"锁"(自动作为类的Class对象的一部分),可在一个类的范围内被相互间锁定起来,从那个类创建的所有对象都共享一"锁"。
1.按照这么理解我应该将所有涉及到的共享互锁的方法都进行类级的锁定,对象级的锁定对于多线程的应用来说没有意义啊。
2.如果我要将一个方法内的某个代码片段进行synchronized,那么是否可以这样:
synchronized(this){//但我想这个this是对象啊,估计不对
do something here!
}