Java Multithreading ArrayBlockingQueue kullanımı

Merhaba , Bu yazımızda multithreading konusunu işlerken karşımıza gelen ve Thread Safe olan bir yapıdan bahsedeceğim. ” ArrayBlockingQueue”  bildiğimiz gibi Producer , Consumer sisteminde biz threadleri bazı kontrol mekanizmaları ile kontrol ediyorduk Reentrantlock yada wait , notify gibi. Eğer böyle yapmazsak threadlerin çalışması sırasında problemlerle karşılaşıyorduk. Biraz açarsak ; Producer üretmeden Consumer thread’i tüketmeye kalkarsa null  değer alacak ve bu da hataya sebep olacaktı. İşin özü bizim iyi bir senkronizasyon yapmamız gerekiyordu. Ancak thread safe nesnelerde ise böyle bir problem olmuyor . peki nasıl oluyor? . bakalım;  örneğin: Bir sıramatik sistemimiz var. Bu sistem nasıl çalışır ? Öncelikle birisi gelir sıra alır , alınan sıra kuyruğa eklenir ( bu bir Produce işlemidir ) , banko görevlisi ise çağır butonuna basar ve kuyruktan bir sıra çeker. Şimdi burada bir producer , consumer sistemi çalışıyor . Thread safe nesne kullandığımızda , Consumer butona bassa bile eğer bir sıra yoksa bu thread bekletilir. Ne zamana kadar? producer bir sıra üretene kadar. İşte Threadlerle çalışırken eğer ArrayBlockingQueue kullanırsak threadlerin kontrolünü kendimiz yapmaya mecbur olmayız thread safe olduğu için o kendi bu işi halledecektir. 

 

Add a Comment

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