Mobil Programlama

Android

DERS PROGRAMI
Android 101 Ders Programı

Öncelik Belirleme (setPriority) Metodu

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Esma Gulbas

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.