Basit olarak Thread bir programda paralel olarak çalışan ve birbirine bağımlı ya da bağımsız işlemler yapan iş yükü parçalarına denir.
Thread sınıfı , Thread üzerinde işlemler oluşturmak ve gerçekleştirmek için yapıcılar ve yöntemler sağlar.
Thread Sınıfı
Thread()
Thread(String name)
Thread(Runnable r)
Thread(Runnable r,String name)
Thread Metotları
public void run(): thread içindeki çalışacak method
public void start(): thread başlangıç method
public void sleep(long miliseconds): thread uyutmak method
public void join(): diğer threadlerin bitmesini bekler
public int getPriority(): threadlere öncelik
public int setPriority(int priority): threadlere öncelik
public String getName(): thread ismini döner
public int getId(): thread id döner
public boolean isAlive(): alive test etmek için
public void yield(): diğer threadler için duraklamasına neden olur
public void stop(): thread durdurmak.
Örnek #1
Java üzerinde Monte Carlo Algoritması ile pi sayısını Thread kullanarak bulma
package yigit; import jdk.swing.interop.SwingInterOpUtils; import java.util.Random; public class yigit { public static void main(String[] args) throws InterruptedException { Data d = new Data(); d.total = 10_000_000; Thread f = new First(d); Thread s = new Second(d); Thread sn = new Sonuc(d); f.setPriority(1); s.setPriority(2); sn.setPriority(3); f.start(); s.start(); sn.start(); } } class Sonuc extends Thread{ Data d; public Sonuc(Data d){ this.d = d; } public void run(){ System.out.println("SONUC CALISTI"); System.out.println("d.inner1 " +d.inner1); System.out.println("d.inner2 " + d.inner2); double PI = 4 * ((float)(d.inner1+d.inner2) / d.total); System.out.println("Pı yaklaşık: " + PI); } } class First extends Thread{ Data d; public First(Data d){ this.d = d; } public Data getird(){ return this.d; } public void run(){ System.out.println("First çalıştı"); Random rand = new Random(); int r = 1; for(int i = 0; i < d.total/2; i++){ double x = rand.nextDouble(); double y = rand.nextDouble(); if(x*x + y*y <= r*r){ d.inner1++; } } System.out.println("d.inner1 ## first " +d.inner1); System.out.println("d.inner 2 ## firs" + d.inner2); } } class Second extends Thread{ Data d; public Second(Data d){ this.d = d; } public void run(){ System.out.println("SEcond calıstı"); System.out.println("d.inner1 ## sec " +d.inner1); System.out.println("d.inner 2 ## sec " + d.inner2); Random rand = new Random(); int r = 1; for(int i = 0; i < d.total/2; i++){ double x = rand.nextDouble(); double y = rand.nextDouble(); if(x*x + y*y <= r*r){ d.inner2++; } } } } class Data{ int total; int inner1 = 0; int inner2 = 0; }
Thread Sınıfı Kullanımı ve Örnekleri