Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

JAVA Thread - Message Passing


SpiderS_DangeR

Öne çıkan mesajlar

Şimdi 1 main'in olduğu class var, 2 thread var connection ve tank diye. connection threadinde super loop ile gelen mesajları okuyorum sürekli, tank classı da ekrana kare çiziyo falan. Şimdi yapmak istediğim şey, gelen mesajı tank classına yollayıp eş zamanlı olarak karenin koordinatlarını update etmek. Google yetemedi, nasıl yaparım?
Link to comment
Sosyal ağlarda paylaş

Producer/Consumer

Thread communication da iki yaklasim la yapabilirsin. Connection thread in Tank thread ine referans tutar, Tank thread in BlockingQueue da get de bekler, connection thread in den Tank thread queue na message paslar.

Burda iki thread in tightly coupled, simple but not elegant.

Diger turlu, Main thread in da queue olur, connection thread in consumer tank midir ahmet midir mehmet midir bilmez, bu queue ya feed eder, Tank thread in bu queue dan alir isler isine bakar, simple more elegant.

Bir bak, kafana yatmazsa sample code yazarim.
Link to comment
Sosyal ağlarda paylaş

Ilk once su adami bir oku;

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/LinkedBlockingQueue.html

Main icine statik utility methodlari yaz

public static void submitNewConsumable (Object consumable); (Bu adami multiple connection thread in varsa senkron yapmak icap eder.)

public static synchronized Object getNewConsumable();

submit de, LinkedBlockingQueue ye mal koyacaksin. Bu adam Collection, extra peek poll seklinde methodlarida var, yukaridaki link e goz atinca anlayacaksin.


Producer thread in (Connection miydi?), run loop da network den data geldikce Main.submitNewConsumable(artikNeKoymakIstiyorsan) yapacak

Consumer thread in, 'blocking' sekilde run loop unda Main.getNewConsumable() uzerinde bekliyor olacak.

Olay, get ettigin noktada queue ya yeni adam girinceye o thread blocked olarak bekleyecek. Dikkat etmen gereken nokta bu thread graphics context is yapiorsa yada UI thread i ise dikkatli olman lazim lakin ui thread ini blocklarsan graphics context catlar.

Bi calistir sonra refactor edersin. Main den bu utulity metod ve container i sokup, bi CommonMedium singleton i yazip, thread lerin bu adam uzerinden alis veris yapmalarini saglarsin.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...