Interruptions

Kategori: Java , 23 Temmuz 2019 , JanFranco


Threadleri interrupt methodu ile kesintiye uğratabilir, sonlandırabiliriz. Direk örnek üzerinden görelim, bir thread içinde 10000000 iteration yapacak bir döngü açalım. Her bir iterationda listeye bir değer eklensin. Thread dışında da 3 saniye main threadi bekletelim, 3. saniye sonunda thread.interrupt methodu ile threade sinyal gönderelim. thread.isInterrupted methodu ile de bu sinyali kontrol ederek threadi sonlandıralım:


import java.util.ArrayList;

public class Main_class {
	
	public static void main(String[] args){
		
		ArrayList<Integer> list = new ArrayList<Integer>();
		Thread thread = new Thread(new Runnable() {
			
			@Override
			public void run() {
				
				System.out.println("Thread çalışıyor...");
				
				for(int i=1; i<=10000000; i++) {
					
					if(Thread.currentThread().isInterrupted()) {
						
						 System.out.println("Kesintiye uğradı...");
						 System.out.println("Eklenen değerlerin sayısı: " + list.size());
						 return;
						
					}
					
					list.add(i);
					
				}
				
				System.out.println("Thread kesintiye uğramadan işi bitirdi...");
				
			}
		});
		
		thread.start();
		
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		thread.interrupt();
		
	}
	
}
Output:

Thread çalışıyor...
Kesintiye uğradı...
Eklenen değerlerin sayısı: 4693661


Sonraki Yazı: Database Connection
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın