java 同步块(Java Synchronized Blocks) (二)

2014-11-24 10:31:14 · 作者: · 浏览: 3
g msg2){
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, 是为了做到更好的测试效果)。