synchronized public void methidA(){
for(int i = 0; i< 100;i++){
System.out.println("methidA");
try{
Thread.sleep(5);
}catch(Exception e){
}
}
}
public void methidB(){
synchronized(this){
for(int i = 0; i< 100;i++){
System.out.println("methidB");
try{
Thread.sleep(5);
}catch(Exception e){
}
}
}
}
仅仅是 相同效果的 两种不同写法
public class MyObject{
/*synchronized*/ public static void methidA(){
for(int i = 0; i< 100;i++){
System.out.println("methidA");
try{
Thread.sleep(5);
}catch(Exception e){
}
}
}
/*synchronized*/ public static void methidB(){
for(int i = 0; i< 100;i++){
System.out.println("methidB");
try{
Thread.sleep(5);
}catch(Exception e){
}
}
}
public static void main(String []args){
System.out.println("test Start!");
new Thread(new Runnable(){
public void run(){
methidA();
}
}).start();
new Thread(new Runnable(){
public void run(){
methidB();
}
}).start();
}
}
结果为乱序。
若将 注释去除 , 先打印A后B
public class MyObject{
/*synchronized*/ public void methidA(){
for(int i = 0; i< 100;i++){
System.out.println("methidA");
try{
Thread.sleep(5);
}catch(Exception e){
}
}
}
/*synchronized*/ public void methidB(){
for(int i = 0; i< 100;i++){
System.out.println("methidB");
try{
Thread.sleep(5);
}catch(Exception e){
}
}
}
public static void main(String []args){
System.out.println("test Start!");
MyObject obj = new MyObject();
new Thread(new Runnable(){
public void run(){
obj.methidA();
}
}).start();
new Thread(new Runnable(){
public void run(){
obj.methidB();
}
}).start();
}
}
此处代码与上片代码执行相同