Java Thread Sınıfı

Thread yapısı, aynı anda ve birbirini beklemeden birden çok işin gerçekleşebildiği yapıdır.

Thread oluştururken, java’da thread sınıfı extend edilebilir ya da runnable implementasyonu tercih edilebilir.

Java’da sadece bir sınıf extend edilebildiği ve…

Thread yapısı, aynı anda ve birbirini beklemeden birden çok işin gerçekleşebildiği yapıdır.

Thread oluştururken, java’da thread sınıfı extend edilebilir ya da runnable implementasyonu tercih edilebilir.

Java’da sadece bir sınıf extend edilebildiği ve daha fazla esneklik sağlamak için runnable implementasyonu daha avantajlıdır.

Önemli tanımlar
Runnable: Thread tanımlarının ne yapması gerektiğini açıklayan bir arayüzdür.
Run: Ana thread bekleme yaparak, diğer thread’ler çalışır.
Start: Ana thread bekleme yapmadan, diğer threadler ile birlikte çalışır.
Join: Mevcut thread işini bitirmeden, diğer thread işine başlayamaz.,
Synchronized: Method’a ulaşmak isteyen threadler method’a sıra ile girerler ve bir thread method’u bitirmeden diğer thread başlayamaz. (Kilitleme mekanizması vardır. Özetle, thread’ler birbirlerinin üstüne basmazlar)

Not: Thread.join(), iş parçacığının tamamen bitmesini beklerken, iki iş parçacığının aynı anda aynı kod parçasını yürütmesini önlemek için synchronized bir blok kullanılabilir.

Örnek Uygulama

package com.app.thread;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main{
    public static void main(String[] args){
        List<Integer> v = new ArrayList<>(Arrays.asList(1, 2, 3,4));

        ThreadExample thread1 = new ThreadExample(v);
        ThreadExample thread2 = new ThreadExample(v);

        try {
            thread1.start();
            thread1.join(); // thread2 çalışabilmek için bekleyecektir.
            thread2.start();
            thread2.join(); // main thread çalışabilmek için bekleyecektir.
           // start yerine run kullanılırsa, 
           // main thread 2 numaralı thread'i beklemeyecek 
           // böylece thread2.join() satırına ihtiyaç duyulmayacaktır. 
        }catch (InterruptedException e) {
            System.out.println(e.getMessage());
        }

        Integer totalSum = thread1.getSum() + thread2.getSum();
        System.out.println(Thread.currentThread().getName() + " => The sum: " + totalSum);
    }
}
package com.app.thread;
import java.util.List;

public class ThreadExample extends Thread implements Runnable{
    private List<Integer> v;
    public Integer sum = 0;

    public ThreadExample(List<Integer> p) {
        this.v = p;
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + " started..");
        synchronized(this) {
            for (Integer i : v) {
                sum += i;
            }
            System.out.println(Thread.currentThread().getName() + " => The sum: " + totalSum);
        }
    }
    public Integer getSum() {
        return sum;
    }
}

Program Çıktısı
Image description


Print Share Comment Cite Upload Translate
APA
Özgür Akıncı | Sciencx (2024-03-29T15:23:25+00:00) » Java Thread Sınıfı. Retrieved from https://www.scien.cx/2022/01/19/java-thread-sinifi/.
MLA
" » Java Thread Sınıfı." Özgür Akıncı | Sciencx - Wednesday January 19, 2022, https://www.scien.cx/2022/01/19/java-thread-sinifi/
HARVARD
Özgür Akıncı | Sciencx Wednesday January 19, 2022 » Java Thread Sınıfı., viewed 2024-03-29T15:23:25+00:00,<https://www.scien.cx/2022/01/19/java-thread-sinifi/>
VANCOUVER
Özgür Akıncı | Sciencx - » Java Thread Sınıfı. [Internet]. [Accessed 2024-03-29T15:23:25+00:00]. Available from: https://www.scien.cx/2022/01/19/java-thread-sinifi/
CHICAGO
" » Java Thread Sınıfı." Özgür Akıncı | Sciencx - Accessed 2024-03-29T15:23:25+00:00. https://www.scien.cx/2022/01/19/java-thread-sinifi/
IEEE
" » Java Thread Sınıfı." Özgür Akıncı | Sciencx [Online]. Available: https://www.scien.cx/2022/01/19/java-thread-sinifi/. [Accessed: 2024-03-29T15:23:25+00:00]
rf:citation
» Java Thread Sınıfı | Özgür Akıncı | Sciencx | https://www.scien.cx/2022/01/19/java-thread-sinifi/ | 2024-03-29T15:23:25+00:00
https://github.com/addpipe/simple-recorderjs-demo