synchronized(MyClass.class){
System.out.println(msg1);
System.out.println(msg2);
}
}
public void log5(String msg1, String msg2){
synchronized(this){
System.out.println(msg1);
System.out.println(msg2);
}
}
} public class SynchronizedTest {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
MyClass.log1("msg11", "msg12") ;
}
}) ;
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
MyClass.log2("msg21", "msg22") ;
}
}) ;
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
MyClass.log3("msg31", "msg32") ;
}
}) ;
Thread t4 = new Thread(new Runnable() {
@Override
public void run() {
MyClass.log4("msg41", "msg42") ;
}
}) ;
Thread t5 = new Thread(new Runnable() {
@Override
public void run() {
new MyClass().log5("msg51", "msg52") ;
}
}) ;
public static void main(String[] args) {
SynchronizedTest st = new SynchronizedTest() ;
st.t1.start() ;
// st.t3.start() ;
// st.t2.start() ;
// st.t4.start() ;
st.t5.start() ;
int i = 0 ;
while(true){
try {
TimeUnit.SECONDS.sleep(1) ;
System.out.println("---------------> " + i);
i ++ ;
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i > 10 ){
break ;
}
}
}
}
测试组合:
1. 测试实例方法组合;
2. 测试静态方法组合;
3. 测试实例方法和静态方法组合;(注意方法里面的 sleep, 是为了做到更好的测试效果)。