Android 101Başlangıç seviyesi derslerde Android uygulama geliştirme ortamını detaylı olarak inceliyoruz.

Tüm Eğitimleri Aldın mı? Kendini sınamanın tam zamanı

Haydi Sınava Gir

Öncelik Belirleme (setPriority) Metodu

Kategori : | Lisans : Creative Commons (by-nc-sa) | En son 18.11.2018 tarihinde güncellendi
Eğitmen : Esma Gulbas
Etiketler : java öncelik belirleme

Bir üst ders içeriğinde anlatmış olduğumuz theradlerin çalışma önceliklerini belirlemek için setPriority metodunu kullanılmaktadır. Aşağıdaki örnekte thread3 en yüksek öneme sahipken diğeri daha az önemli olarak tanımlanmıştır.

 

public class ThreadLesson {
	   public static void main(String[] args) {
	      Thread thread1 = new Thread(new MyThread("thread1", 6));
	      Thread thread2 = new Thread(new MyThread("thread2", 5));
	      Thread thread3 = new Thread(new MyThread("thread3", 4));
	      thread3.setPriority(Thread.MAX_PRIORITY);
	      thread1.setPriority(Thread.MIN_PRIORITY);
	      thread2.setPriority(Thread.MIN_PRIORITY);
	      thread1.start();
	      thread2.start();
	      thread3.start();
	   }
	}

 

Bu örnegimizde setPriority(Thread.MAX_PRIORITY) koduyla birlikte threadimizin en öncelikli çalışmasını sağlarken, setPriority(Thread.MIN_PRIORITY) koduyla threadimizin en düşük öncelikle çalışmasını sağladık.

 

İşlemin çıktısına baktığımızda ise thread1.start() kod da daha önce olmasına rağmen thread3 önceliklendirildiği için işlemini ilk bitirir.

thread1 : 0

thread2 : 0

thread3 : 0

thread1 : 1

thread3 : 1

thread2 : 1

thread3 : 2

thread1 : 2

thread3 : 3

thread2 : 2

thread1 : 3

thread2 : 3

thread1 : 4

thread2 : 4

thread1 : 5

Bu şekilde dilediğimiz kadar iş parçası tanımlayıp eşzamanlı olarak istediğimiz kadar işlem yapabilmekteyiz. Ancak unutulmaması gereken, oluşturulan her Thread'in sistemin belleğinden ve işlemciden bir pay aldığıdır. Aşırı sayıda Thread oluşturulması mikroişlemcinin işlemler arası geçiş yapması gerektiğinden ciddi performans kayıplarına yol açacaktır. Bu işlemleri düzenlemek için bir sonraki eğitim içeriğinde Executor sınıfının özelliklerini kullanacağız.