Java synchronized

Tanım;

synchronized Anahtar kelimesi metodun başına getirildiğinde;
Metoda ulaşmak isteyen Threadler metoda sıra ile girerler ve bir Thread metodu bitirmeden diğer Thread giremez.


Giriş;

package KodSozluk;

public class KodSozluk{

	public static void main(String[]args){

		isParcacigi thread1 = new isParcacigi();
		isParcacigi thread2 = new isParcacigi();
		
		thread1.start();                          
		thread2.start(); 
	}
}

class isParcacigi extends Thread{
	
	synchronized void synMetod(){   // Bir thread işini bitirmeden diğer bu metoda thread giremez.
		
		for(int i=0;i<5;i++){	
			System.out.println("Şuan çalışan iş parçacığı ->"+ this.getName());
		}
	}
	
	public void run(){
			
		synMetod();
					
	}	
}


Çıkış;

Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-1

// eğer synchronized metodun başına getirilmezse bütün threadler işini bitirmeden girebilir. Aşağıdaki gibi olur.

Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-0
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-1
Şuan çalışan iş parçacığı ->Thread-0

Yorumlar

Bu gönderi için yorum yapılmadı.