Yol Verme, Uyuma ve Bağlanma
Fazla zaman tüketen bir iş parçacığı, Thread sınıfının yield() metodunu çağırarak diğer iş parçacıklarına yürütülmeleri için izin verebilir. Eğer bir iş parçacığı yield() metodunu çağırırsa, programlayıcı güncel ola iş parçacığını durdurup bekleyenlerden birin izin verebilir. Bu nedenle, yield() metodunu çağıran iş parçacığı programcının tekrar kendisine dönmesi için bekleyecektir. Aşağıdaki örnek yield() metodunun kullanılışını gösterir:
Kod Çıktı
yield() kullanmadan
Çıktı
yield() kullanarak
public class MyThread extends Thread {
	public MyThread(String name){
		super(name);
	}
	public void run(){
		for(int i=0; i<3; i++){
			System.out.println(getName());
			yield();
		}
	}
	public static void main(String[] args) {
		MyThread t1 = new MyThread("t1");
		MyThread t2 = new MyThread("t2");
		t1.start();
		t2.start();
	}
}
t1
t1
t1
t2
t2
t2
t1
t2
t1
t2
t1
t2
Not: Yukarıdaki örnekte, her iş parçacığına onun yapılandırıcısı aracılığıyla bir isim atanmıştır. İş parçacığının adı getName() metodu ile döndürülebilir.
Bir iş parçacığının yürütülmesini belirli bir zaman kadar durdurmak için
sleep(<milisaniye şayisi>);
sleep()
metodu su şekilde kullanılabilir: Uyuyan bir iş parçacığı CPU u kullanmaz. Belirtilen sure geçtikten sonra, programlayıcı tarafından yürütülmesine izin verilebilir. Yani bekleme zamanı belirtilen sureden uzun olabilir. Eğer iş parçacığı uyuma suresinde kesilirse, sleep() metodu döndürüldüğünde InterruptedException atılır.
join() metodu bir iş parçacığının, bir başka iş parçacığının yürütülmesinin tamamlanmasına kadar beklemesini sağlar. sleep() metodu gibi, kesilmek istenirse InterruptedException atar. Aşağıdaki örnekte, t1 tamamlandıktan sonra yürütülme devam eder.
Thread t1 = new Thread(…);
t1.start();
…
t1.join();
// asagidaki ifade t1 oldukten sonra devam edecektir. 
…