JAVAFX Concurrent Framework Part-1

Merhaba Arkadaşlar sizlerle türkçe kaynak sıkıntısı yaşadığım bir konuda bilgi vermek ( hatta ciddi ciddi anlatmak ) istiyorum.  Javafx Eşzamanlılık framework’ü  Java 5 ile birlikte  “java.util.concurrent” paketi adı altında java’ya eklenen küçük bir paket. Eş zamanlı işlemleri java GUI (Grafik User Interface) üzerinde kullanmak için düşünülmüş bir yapı.  

1.1 Giriş

Bu framework bir interface, dört class ve bir adet enum dan oluşmaktadır.  Task sınıfı Worker interfacesini implemente etmiştir. Task sınıfı Javafx Main Thread tarafından izlenebilir bir sınıftır. ( İşte burası çok güzel :)) 

Worker interfacesini sadece Task değil bunun yanında Service ve ScheduledService sınıflarıda implemente etmiştir.  Bunların herbiri farkı tip işleri ifade etmektedir ve Abstract ( soyut) sınıfdırlar.  Task sınıfının diğerlerinden bir farkı var o da şu ki tek atımlık silah gibidir. Yani durdurulup tekrar başlatılamaz tek seferliktir yada yeni bir nesne oluşturup çalıştırmak lazım. Buna karşın Service tekrar kullanılabilir bir yapıdadır. ScheduledService nesnesi ise Service sınıfından extend edilmiştir bunun farkı ise belirlenen zamanda işlemleri tekrarlar interval diye bir parametre alır. 

1.2 Worker interfacesini anlayalım 

Worker<V> interfacesi herhangi bir işi Concurency Framework kullanarak yapabilmeyi sağlar.  Task nesnesinin arka planın da aslında Worker<V> interfacesi vardır. Burada V generic tipi ise Task nesnesi call() metodunu override ettikten sonraki döndürdüğü değerin tipini belirtir.  Task nesnesi observable ( izlenebilir) bir nesnedir.  Ve benim en sevdiğim tarafını ifade edeyim. Task nesnesinin  içinde olan bitenler Javafx Application Thread ‘ine kullanılmak üzere servis edilmektedir. Bu durumda Sahnedeki ( Scene Graph) nesnelerle iletişimi sağlar ki bu bir çok kişinin arayıp da bulamadığı bir iştir :))). Bu mesele şimdilik bu kadar yeter burada kalsın gelin biz bir örnek üzerinden konuyu detaylandırmaya devam edelim. 

Eveet şimdi gelelim işimizi kolaylaştıracak bazı sınıflara “WorkerStateGUI.java” bu sınıf bu framework içindeki bir sınıf değil ama işimizi kolaylaştırmaya yönelik yazılmış bir mantık olarak düşünülebilir.  Temel olarak bu sınıf içinde görsel arayüz hazırlanıyor ve iki tane ana metod bu işi gerçekleştiriyor.  addGUI(); metodu ile sahneye elemanları oluşturan yapıyı kuruyoruz.  bindToWorker( Task task) ; bu metodla ise :  Hani dedik ya Task içinde olanlar Javafx Application Thread’a sunulur , ha işte Task içinde olan bitenleri arayüzümüzdeki elemanlara bağlıyoruz. Zaten Task<V>  içinde observable nesnelerden ibaretti ….. ( ooooo ne güzel ).  Sonrada constructor ‘da bu iki metodu çağıralım ve arayüzümüz oluşsun.  

WorkerStateGUI.java

Evet bu şekilde yardımcı sınıfımızı hazırlamış olduk. Şimdi verilen aralıktaki sayıların asal olup olmadığını bulmak için gerekli yardımcı sınıfımızı da yazalım. 

PrimeUtil.java

Evet yazımıza burada ara verip Part 2 de buluşalım…

Bir cevap yazın

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