SORU
13 Aralık 2010, PAZARTESİ


Nasıl bir iş parçacığı anında soket IO engelleme işlemi sona erdirmek için?

Bağlamında Java, ben yeni bir iş parçacığı okuma ağ giriş açık bir GUI pencere ve pencereyi kapatıyorum istiyorum bırakın soket kaynak sona erer konu hemen. Şimdi setSoTimeout yöntemi kullanıyorum, ama zaman aşımı özel durum beklemek istemiyorum. Biri bir öneri verebilir misiniz? Teşekkürler!

CEVAP
13 Aralık 2010, PAZARTESİ


(Potansiyel olarak) bunu yapmak için üç yolu vardır:

  • Soket Socket.close() arama InputStream OutputStream ilişkili nesneleri kapatın ve herhangi bir iş parçacığı Yuva veya (ilişkili) bir akış işlemleri bloke engellenmemiş neden olur. Bu javadoc göre, soket kendisini işlemleri SocketException bir durum oluşturur.

  • Thread.interrupt() arama (bazı durumlarda bu belirtilmemiş) engelleme G/Ç işlemi, InterruptedIOException atmak için neden kesecektir.

    Uyarı not. "(Kesme)" yaklaşım "en" modern Java platformları. işe yaramıyor anlaşılan Eğer bir başkası zaman ve eğim olsa, bu yaklaşım çalışır koşulları araştırmak olabilirler. Ancak, bu davranış, belirli bir platform olduğu gerçeği ise yalnızca kendi uygulama belirli bir platform üzerinde çalışmak gerekiyorsa sadece onu kullanmanız gerektiğini söylemek yeterli olacaktır. Hangi "dene" kendin için.) kolayca

  • Bunu yapmak için mümkün olan üçüncü bir yol Socket.shutdownInput() ve/veya Socket.shutdownOutput() aramak. Bu javadocs okuyup şu anda engellenen işlemleri/yazma ile olmuyor açıkça söyleme, ama mantıksız ve bir istisna engelini atarlar düşünmek değildir. Eğer javadoc neler olacağını söylemiyor eğer doğru değilse ancak, bu davranış, belirli bir platform olarak kabul edilmelidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ODN

    ODN

    26 Kasım 2006
  • Sorikan

    Sorikan

    3 ŞUBAT 2008
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011