0

Java Thread ve MultiThreading

Merhaba arkadaşlar bu yazıda bazılarının  anlamakta zorlandığı Thread – (İş parçacığı )  – MultiThreading ( Çoklu İşlem ) konusundan bahsedeceğim. Aslında kolay ve hayatın içinde bir durum. Nasıl hayatın içinde ? Kendimize bakalım bir anda sadece bir iş yapmıyoruz değil mi ? Örneğin : Araba sürerken birçok işi kısa zaman aralıkları ile tamamlıyoruz. Sadece bir işe odaklanıp kalmıyoruz. Hatta yeni araba sürmeyi öğrenenler genellikle vitesle uğraşacağım diye direksiyon kontrolünü kaybediyorlar. Araba sürmeyi öğrenince ise bir tarafdan yolu takip ederken , bir tarafdan vites değişitirip ,bir tarafdan aracın durumunu takip edip , bir tarafdan pedalları koordine ediyor. 

Şimdi bu örneğe bakınca bir şoförün aynı anda bir sürü iş yaptığını veya yapması gerektiğini görüyoruz.  İşte bizim programlarımızda bir aracı sürmek gibi işlemler yapabilir. Aracı otomatik süren bir pilot olsa bu sadece direksiyonla ilgilense diğer hiçbir şeyi yapmasa olmaz değil mi 🙂 . 

O halde programımıza birden çok işlemi aynı anda yapma kabiliyeti veren yapıya ” MultiThreading” yapısı diyoruz.  Hımmm.

Peki Programımızda nasıl bir yapı var ve nasıl oluşturacağız bu yeni threadleri ?

Bir uygulamanın içinde kendine has bir ana Thread vardır. Bu thread konsol uygulamalarında “Main Thread” , javaFX uygulamalarında “Application Thread” diye geçer.  Bu threadler otomatik olarak oluşturulur.  Biz kodlarımızı aslında bugüne kadar hep ana thread içinde çalıştırdık. Ancak projelerimizin kabiliyetleri arttıkça bu yapı bize yetmeyecek.  Yine şöyle bir örnek verelim ;

Örneğin Siz bir toptancısınız ve ürünlerinizin fiyatları ile ilgili sürekli güncellemeler oluyor , bir tarafdan satış analizlerini takip ediyorsunuz , bir yandan stokda sürekli değişimler oluyor bunları takip ediyorsunuz. 

Şimdiiiii…… . Siz aynı anda birçok işi takip ediyorsunuz ama programınız da öyle mi ?  Evet gördüğünüz gibi programınızın da size karşılık verebilme kabiliyeti olmalı .  Programı açtığınızda sürekli stok durumunu güncelleştirtseniz programınız donacak ve diğer işlemleri yapamayacaksınız. Yada diğer işlemlerden hangisini yapsanız ekran donacak ve diğer işlemlere sıra gelemeyecek . Farenizin imleci sürekli yuvarlak dolan simge olarak kalacak. : )  kötü bir programcılık deneyimi olacak. 

O zaman buyurun multithreading dünyasına . İşte konu bu kadar basit aslında . Şimdi bir process’in yapısına bakalım  neler var sonra nasıl oluşturulduğundan bahsedelim. 

 gördüğünüz gibi tek bir thread yapısında bir thread stack var programımızdaki primitif veriler ve Heap’daki nesnelerin referansları burada tutulur. Heap ‘da ise referans türü nesneler tutulur . Herbir thread’in ayrı bir stack’i var fakat heap bir tane bütün threadler aynı heap’ e ulaşabilir. Stack ve Heap ile ilgili daha fazla bilgi isteyen arama motorlarına müracaat edebilir. : ) 

 

 

Nasıl oluşturacağım sorusu için Thread sınıfından extend ve Runnable interfacesini implemente etmek diye iki yöntem söyleyebiliriz. onunla ilgili şu yazıma bakarsanız orada anlattım. 

Evet bu yazıyı burada noktalayabiliriz sanırım . Uygulamalarınızda aynı anda birçok işlem gerçekleştirmek istiyorsanız ve bir bir işlem yapılırken diğer işlemler durmasın istiyorsanız bu yapıyı mutlaka kullanın derim. 

 

 

admin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir