マルチスレッド-同期ロック


public class SynchronizedDemo{
	
	public static void main(String args[]){
		
		 System.out.println("main ");
		 
		 Account account1=new Account(" ");// 
		 
		 new ThreadDemo("A",account1,1).start();// 
		 new ThreadDemo("B",account1,2).start();// 
                       new ThreadDemo("C",account1,1).start();// 

		 System.out.println("main ");
		
		
		}
	
};

class ThreadDemo extends Thread{
	public Account account;
	public int flag=1;
	
	public ThreadDemo(String name,Account account,int flag){
		
	   super(name);
	   this.account=account;
	   this.flag=flag;
	}
	
	public void run(){
		
/*		for(int i=0;i<4;i++){
		System.out.println(" "+Thread.currentThread().getName()+i)	;
		}*/
		if(flag==1){
		 this.account.working();
		}else{
		 this.account.sleep();
			
		}
		
	}
	
}; 


class Account{
 private String name;
 private int i=30;
 
 public Account(String name){
 	this.name=name;
 }
	

//public  void  working(){
 public synchronized void  working(){
	for(int j=0;j<8;j++){
	 System.out.println(" "+Thread.currentThread().getName()+"     "+name+"  "+" "+i);
	i--;	
}
}


 public  synchronized  void sleep(){
 	for(int j=0;j<8;j++){
 	 System.out.println(" "+Thread.currentThread().getName()+"     "+name+"  "+" "+i);
 	 i++;
 		
 	}
 	
 }
	



	
}

説明: