Üzerinde çalıştığım projede, bir sınıf üzerine bir stream üzerinden gelen verileri işleyip output olarak yine stream üzerine yazmam gerekti. Bunun için basit bir çözüm olarak PipedOutputStream ile PipedInputStream'ı connect edip birinden yazılan veriyi diğerinden okuyabiliyorum. Fakat bunları aynı thread üzerinden yapmam gerekiyor.Şimdilik çalışıyor fakat aynı thread üzerinde olmaları bi sorun oluşturur mu? Aynı işlemi yapabilmek için başka yollar mevcut mu ?

soruldu: 08 May '13, 13:55

merakedenadam's gravatar image

merakedenadam
22191015
cevap kabul oranı: 20%

değiştirildi: 27 May '13, 04:57

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


PipedInputStream dokümanları der ki:

Typically, data is read from a PipedInputStream object by one thread and data is written to the corresponding PipedOutputStream by some other thread. Attempting to use both objects from a single thread is not recommended, as it may deadlock the thread.

Yani aynı thread'de kullanılan iki nesne birbirlerini kilitleyebilir diyor. Neden böyle diyor? Pipe sınıfları iki thread'den kullanılmak için yapılmışlar. Yani ayrı threadlerde çalıştıklarında paylaşılan buffer'ı bir mutex ile senkronize edebiliyorlar. Aynı threadde ise mutex bir işe yaramıyor. En kolay pipe kullanımı ana threadde iki pipe oluşturup okumayı anonim bir Runnable nesnesi içinde run'da yapmak.

permanent link

cevaplandı: 28 May '13, 01:09

nurettin's gravatar image

nurettin
2.2k2441
cevap kabul oranı: 14%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×31
×1

Soruldu: 08 May '13, 13:55

Görüntüleme: 923 kez

Son güncelleme: 28 May '13, 01:09

powered by BitNami OSQA