分情况:
1、其他方法前是否加了synchronized关键字,如果没加,则能。
package myproject02;
public class ThreadTest {
int i = 0;
int j = 0;
public static void main(String[] args) {
final ThreadTest threadTest = new ThreadTest();
new Thread() {
public void run() {
threadTest.printI();
}
}.start();
new Thread() {
public void run() {
threadTest.printJ();
}
}.start();
}
public synchronized void printI() {
while (i < 100)
System.out.println("i==" + i++);
}
public synchronized void printJ()//加上synchronized则不能
//public void printJ()
{
while (j < 10)
System.out.println("j==" + j++);
}
}
2、如果这个方法内部调用了wait,则可以进入其他synchronized方法
3、如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能。
4、如果其他方法是static,她用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是this