簡體   English   中英

多線程

[英]multi threading

即時通訊正在做一個客戶端服務器應用程序,其中有多個客戶端,它們由一個服務器控制。...在這里,即時通訊捕獲了所有客戶端的屏幕,我希望它們發送towords服務器...所以它需要多線程... 。所以有人可以告訴我如何在應用程序中使用多線程嗎?

請閱讀java.util.concurrent ,尤其是Callable接口,它比早期Java版本中的Runnable接口要好,因為它允許您從call方法(而不是run方法)返回一個值。 線程池也很有用-它們是由Executor類作為ExecutorServices創建的,您可以限制線程數,從而限制服務器端的負載。 當然,JavaDoc中針對這些的示例是一個簡單的服務器,它接受來自客戶端的連接,因此它可能適用於您的情況(盡管沒有非常清楚地描述)。

否則,線程是一個非常大的主題,在這里的帖子中確實無法回答。 您可以買一本有關Java線程的書,但是我不知道哪本書是最好的。

正如您所描述的,這顯然不是多線程問題。

  • 如果這是客戶端驅動的方案(即客戶端選擇何時發送屏幕),則可以讓他們在服務器中調用方法。
  • 如果是服務器驅動的,則可以使用觀察者模式

無論哪種方式,如果問題都是您所描述的,則可以避免多線程!

理想情況下,您應該為您的服務器實施使用Web服務器或應用服務器,該服務器已經為您完成了此工作。

如果這是某種定制服務器,那么您應該像已經提到的那樣檢出線程池。 如果您不需要由線程安全的輔助線程執行工作,那么這可能就足夠了(即,僅出於性能考慮而存在一個簡單的並發調度問題)。

如果您需要對線程安全編程的深入了解,那么您需要做更多的研究,閱讀書籍以及理想地接受一些指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM