• Buradasın

    Java'da Thread Kullanımı ve Senkronizasyon Eğitimi

    youtube.com/watch?v=Tipij9qIU8k

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan Java programlama dilinde thread (paralel işlem) ve senkronizasyon konularını içeren kapsamlı bir eğitim içeriğidir.
    • Video, Java'da thread oluşturma yöntemlerini (Thread sınıfından türetme ve Runnable interface'den türetme), thread'lerin durumunu (çalışıyor, durdurulmuş, poz edilmiş), öncelik ayarlarını ve senkronizasyon kavramını adım adım anlatmaktadır. Eğitmen, kod yazarak konuları göstermekte ve "progress thread" örneği üzerinden thread başlatma, durdurma, devam ettirme ve bekletme işlemlerini detaylı olarak açıklamaktadır.
    • Eğitim içeriğinde ayrıca senkronize metodların kullanımı, banka hesap örneği üzerinden senkronizasyonun önemi ve Visual Studio'da form uygulaması oluşturma gibi pratik uygulamalar da yer almaktadır. İç sınıflar hakkında kısa bilgiler de paylaşılmaktadır.
    00:09Main Thread ve Diğer Thread'ler
    • Main thread her zaman uygulamanın içinde olmak zorundadır ve diğer thread'leri çağıracağımız bir ortam sağlar.
    • Uygulamada main thread en son biten thread olur çünkü diğer thread'ler tamamlandıktan sonra main thread bitirir.
    • Eğer main thread durdurulursa, uygulama esnasında kontrol ettiği tüm thread'ler de duracaktır.
    01:15Thread'lerin Avantajları
    • Tek thread'li uygulamalarda teker teker işler yapılırken, thread'ler kullanılarak aynı anda birden fazla işlem gerçekleştirilebilir.
    • Veritabanından veri alırken thread'ler kullanıldığında uygulama çok daha hızlı çalışır, en kötü ihtimalle ekran hemen gözükür.
    • Web sunucuları tamamen thread bazlı çalışır ve her gelen client için yeni bir thread açar.
    02:49Thread'lerin Kullanım Alanları
    • Microsoft Outlook gibi uygulamalar birden çok threadli çalışır; bir yandan mail yazarken arka planda yeni mailleri getirir.
    • Bazı durumlarda thread'ler uygulamaya aşırı yoğunluk ve yavaşlatma yapabilir.
    • Thread sleep metodu programın istediğiniz yerinden çağrılabilir ve belirli bir süre içinde programın çalışmasını durdurur.
    04:18Thread Oluşturma Yöntemleri
    • Thread oluşturmanın iki yöntemi vardır: Java'nın içindeki Thread sınıfını extend etmek veya Runnable interface'den türetmek.
    • Thread sınıfından türetme yönteminde, yeni bir nesne oluşturarak belli metotları çağırarak kullanılır.
    • Runnable interface'den türetme yönteminde, tek farkı interface'den türettirilmesi olmasına rağmen çalışma mantığı benzerdir.
    05:36Thread Örneği
    • Thread oluşturmak için önce bir sınıf yazılır ve bu sınıf Thread sınıfından türetilir.
    • Thread sınıfından türetilen sınıfta Run metodunu ezerek kendi Run metodunu yazmak gerekir.
    • Thread'i çalıştırmak için start metodunu kullanmak gerekir, aksi takdirde sadece main thread'in içinde kalır ve paralel bir kanal açılmaz.
    11:31Thread Sleep Kullanımı
    • Thread sleep metodu, thread'in belirli bir süre içinde çalışmasını durdurur.
    • Thread sleep kullanıldığında, kodların çalışması daha yavaş ve anlamlı hale gelir.
    • Thread'ler aynı anda çalışmaz, ancak çok hızlı gerçekleştiği için aynı anda oluyormuş gibi algılanır.
    12:51Runnable ile Thread Oluşturma
    • Runnable interface'inden türetilen bir sınıf oluşturulabilir ve bu sınıfta run metodu ezilmelidir.
    • Runnable sınıfı, thread'lerin çalışmasını sağlayan bir yapıdır ve thread'lerin hızını ayarlamak için bekletme işlemleri yapılabilir.
    • Thread'leri oluşturmak için iki yöntem vardır: kendi sınıfıyla doğrudan oluşturmak veya Thread sınıfını kullanarak Runnable tipinde bir obje ile oluşturmak.
    16:23Thread Metotları ve Özellikleri
    • Thread'lerin durumunu kontrol etmek için isRunning() metodu kullanılabilir.
    • Java Virtual Machine, thread pool'u yönetir ve thread'lerin önceliklerini ayarlayabilirsiniz.
    • Thread'lerin önceliği sıfırdan başlayarak max değerine kadar artırılabilir, bu da thread'in öncelik sıralamasını belirler.
    19:47Senkronizasyon Kavramı
    • Senkronizasyon, birden fazla thread'in aynı objeye erişimini kontrol etmek için kullanılan bir mekanizmadır.
    • Web uygulamalarında, birden fazla kullanıcı aynı objeye erişim sağladığında senkronizasyon sorunları yaşanabilir.
    • Senkron metotlar, birden fazla thread'in aynı anda aynı objeye erişimini engelleyerek karman çorman durumları önler.
    21:22Senkronizasyon Örneği
    • Öğrenci nesnesi örneği ile senkronizasyon kavramı gösterilmiştir.
    • Öğrenci nesnesinin bilgi alma metodu, birden fazla thread tarafından aynı anda erişilebilir.
    • Senkronizasyon ayarı yapılmadığında, thread'ler karmaşık bir şekilde çalışır ve hangi thread'in hangi sırada eriştiği belirsizdir.
    27:06Senkron Metotlar ve Thread Önceliği
    • Senkron anahtar kelimesi, metodun kendini bitirdiği anda kilitlenmesini sağlar ve Java ilk gelen thread'e izin verir, diğer thread'leri bekletir.
    • Senkronize kuralına göre, hangi thread önce girerse girmesin, ilk gelen thread'e izin verilir.
    • Senkronize metotlar, özellikle web uygulamalarında veya birden fazla thread'in aynı anda erişmeye çalıştığı durumlarda, veri bütünlüğünü korumak için kullanılır.
    28:35Banka Hesabı Örneği
    • Banka hesabı sınıfında bakiye değişkeni bulunur ve para çekme metodu, bakiyeden büyük tutar çekildiğinde işlemi sonlandırır.
    • İki thread aynı anda para çekme metodu çağırdığında, senkronize olmayan durumda her iki thread de para çekebilir, bu da gerçek hayatta mümkün değildir.
    • Senkronize metot kullanıldığında, önce giren thread'e izin verilir ve diğer thread'ler bekletilir.
    37:12Thread'leri Başlatıp Durdurma
    • Thread'leri başlatmak ve durdurmak için bir görsel uygulama oluşturulabilir.
    • İç sınıflar (inner class) dış sınıfın global elemanlarına erişebilir, ancak dış sınıf iç sınıfın elemanlarına erişemez.
    • Thread'i durdurmak için bir control flag (değişken) kullanılabilir ve bu değişken switch-case yapısı ile kontrol edilebilir.
    43:59Thread Kullanımı ve İlerleme Gösterimi
    • "Progress thread" global olarak tanımlanıyor ve main içinden ulaşmak için kullanılıyor.
    • Thread başlatıldığında "thread durduruldu" değeri false olarak ayarlanıyor.
    • Progress bar'ın set value'su arttırılarak ilerleme gösteriliyor, ancak her seferinde sıfırdan başladığı için hızlanıyor.
    47:03Thread Durdurma ve Devam Etme
    • Thread durdurmak için "beklemede" adında bir değişken kullanılıyor.
    • "Wake" metodu, objeden gelen bir metottur ve objeye erişilen thread'i beklettirir.
    • Thread'i devam ettirmek için "set beklemede" değeri false yapılıp, thread'e "notify" ile haber verilmesi gerekiyor.
    49:39Thread İşlemleri
    • Thread'i başlattıktan sonra "devam ettir", "beklet" ve "durdur" seçenekleri kullanılıyor.
    • Thread'i durdurmak için sıfırlatma işlemi yapılması gerekiyor.
    • Bu işlemler sayesinde thread'in durdurulup devam ettirilmesi ve bekletilmesi sağlanıyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor