İçeriğe geçmek için "Enter"a basın

Java’da Thread Oluşumu

Thread sınıfı bir programdaki yürütme parçacığıdır. Java Sanal Makinesi bir uygulamada  birden fazla yürütme parçacığının aynı anda çalışmasına izin verir.

Thread sınıfı hakkında önemli noktalar;

  • Her işin önceliği vardır.İşler yüksek öncelikte olanlardan düşük öncelikte olanlara göre yapılır.
  • Her bir iş,bekletici program,hayalet program(daemon) olarak işaretlenebilir de işaretlenmeye de bilir.
  • Yeni bir iş yürütücüsü oluşturmanın üç yolu vardır.Bunlara örnekler ile bir göz atalım.
Birinci yol;

[cc lang=”java”]

package thread1;

class Runner extends Thread{

@Override
public void run() {

for(int i=0;i<2;i++){
System.out.println(“Yazarbey “+i);

try{
Thread.sleep(100);
}catch(InterruptedException ex){
ex.printStackTrace();
}
}
}

}
public class Thread1 {

public static void main(String[] args) {

Runner runner1 = new Runner();
runner1.start();

Runner runner2 = new Runner();
runner2.start();

}

}

[/cc]

Çıktı;

İlk olarak Thread sınıfı ile genişletilmiş Runner adında bir sınıf oluşturduk.Üzerinde değişiklik yapılabilen(override) run() metodunda;

1) “Yazarbey + for sayacı” şeklinde stringler bastırması için limiti 2 olan bir for döngüsü oluşturduk.         

2)try-catch yapısının içinde ise döngüyü her seferinde 100 milisaniye geciktirecek  Thread.sleep(100) metodunu kullandık.

Son olarak main fonksiyonunda Runner sınıfından iki nesne oluşturup start() metoduyla başlattık.Java Sanal Makinesi ikisini de aynı anda yürütüp ilk olarak “Yazarbey 0” stringini bastırmıştır.

İkinci yol;

[cc lang=”java”]
package thread1;

class Runner implements Runnable{

@Override
public void run() {

for(int i=0;i<2;i++){
System.out.println(“Yazarbey “+i);

try{
Thread.sleep(100);
}catch(InterruptedException ex){
ex.printStackTrace();
}
}
}

}

public class Thread1 {

public static void main(String[] args) {

Runner runner1 = new Runner();
Thread thread1 = new Thread(runner1);
thread1.start();

Runner runner2 = new Runner();
Thread thread2 = new Thread(runner2);
thread2.start();

}

}

[/cc]

Çıktı;

İlk olarak Runnable sınıfı ile genişletilmiş Runner adında bir sınıf oluşturduk.Üzerinde değişiklik yapılabilen(override) run() metodunda;

1)“Yazarbey + for sayacı” şeklinde stringler bastırması için limiti 2 olan bir for döngüsü oluşturduk.         

2)try-catch yapısının içinde ise döngüyü her seferinde 100 milisaniye geciktirecek  Thread.sleep(100) metodunu kullandık.

Son olarak main fonksiyonunda Runner sınıfından iki nesne oluşturup Thread sınıfına ekledik.start() metoduyla başlattıktan sonra Java Sanal Makinesi ikisini de aynı anda yürütüp ilk olarak “Yazarbey 0” stringini bastırmıştır.

Üçüncü Yol;

[cc lang=”java”]

package thread1;

public class Thread1 {

public static void main(String[] args) {

Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {

for(int i=0;i<2;i++){

System.out.println(“Yazarbey “+i);

try{
Thread.sleep(100);
}catch(InterruptedException ex){
ex.printStackTrace();
}

}
}
});

thread1.start();

Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {

for(int i=0;i<2;i++){

System.out.println(“Yazarbey “+i);

try{
Thread.sleep(100);
}catch(InterruptedException ex){
ex.printStackTrace();
}

}
}
});

thread2.start();

}

}

[/cc]

Çıktı;

İlk olarak Thread sınıfının kurucu metodunda new Runnable() adında bir iç sınıf oluşturduk.Daha sonra,üzerinde değişiklik yapılabilen(override) run() metodunda;

1)“Yazarbey + for sayacı” şeklinde stringler bastırması için limiti 2 olan bir for döngüsü oluşturduk.        

2) try-catch yapısının içinde ise döngüyü her seferinde 100 milisaniye geciktirecek  Thread.sleep(100) metodunu kullandık.

Son olarak main fonksiyonunda; Thread sınıfının nesnelerini start() metoduyla başlattık. Java Sanal Makinesi ikisini de aynı anda yürütüp ilk olarak “Yazarbey 0” stringini bastırmıştır.

İlk yorum yapan siz olun

Bir cevap yazın