Thread,bir programı oluşturan iş parçacıklarıdır.Bildiğimiz gibi programlar küçük küçük iş parçacıkları(thread) tarafından oluşturulmaktadır.Gerçek hayata örnek verirsek yolda yürümek bir thread,yolda yürüken müzik dinlemek ayrı bir thread,yolda yürüyüp müzik dinlerken etrafı izlemek ise başka bir thread dir.
Burada size giriş olarak en basit anlamda bir thread JAVA platformunda nasıl oluşturulur,oluşturulan thread nasıl geçici bir süreliğine durdurulur -ki biz buna literatürde uyku(sleep) diyoruz- onu anlatacağım.
import java.util.Random;
public class Olay implements Runnable {
String isim;
int zaman;
Random r = new Random();
public Deneme(String i){
isim=s;
zaman=r.nextInt(10);
}
public void run(){
try{
System.out.printf("%s uyudu %d ms \n", isim,zaman);
Thread.sleep(zaman);
System.out.printf("%s tamamlandı\n", isim);
}
catch(Exception e){
}
}
}
Threadlerimizin çalışması için Runnable arayüzünü oluşturduğumuz Olay sınıfına ekliyoruz.
java.util.Random: Random,rastgele bir değer üreten bir sınıftır.
zaman=r.nextInt(10) : Buradaki "r" Random sınıfının bir objesi olup nextInt(10) metodu,zaman türündeki bir değeri giriş olarak zaman değişkenine atmaktadır.
public void run() : Fonksiyon başlığından belli olduğu gibi run() metodu threadimizi çalıştırdığımız fonksiyondur.Bu fonksiyonun içine biz hangi kodları yazarsak threadimiz ona göre çalışacaktır.Biz basit anlamda threadlerin rahat anlaşılması için ekrana çıktı veren fonksiyonları yazdık.
Thread.sleep() : Sleep metoduyla giriş değeri olarak "zaman" değişkeninden aldığımız değeri milisaniye cinsinden aktarır.Alınan değer oluşturduğumuz thread i uykuya geçirir.Örneğin Thread.sleep(1000) demek, 1000 milisaniye boyunca thread uykuya geçecek demektir.
public class anaFonksiyon{
public static void main(String[] args){
Thread t1 = new Thread(new Deneme("Bir"));
Thread t2 = new Thread(new Deneme("İki"));
Thread t3 = new Thread(new Deneme("Üç"));
t1.start();
t2.start();
t3.start();
}
}
Main kodumuzda Olay.java oluşturduğumuz sınıfları tek tek çağırıyoruz.
Konsol ekranımız Şöyle olur:
İki uyudu 5 ms
Üç uyudu 4 ms
Bir uyudu 8 ms
Üç tamamlandı
İki tamamlandı
Bir tamamlandı
Gördüğümüz gibi "Bir" 8 ms boyunca durdurulduktan sonra tamamlanmıştır.Aynı şekilde "İki" 5 ms, "Üç" 4 ms boyunca.En kısa "Üç" uyuduğu için "Üç" işini en erken sonlandırmıştır.Ondan sonra "İki" ve en son "Bir" işini sonlandırmıştır