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