[英]How do I avoid the timeout of each socket when sending an object?
我將嘗試盡可能精確地描述問題並進行總結:
我必須通過TCP(套接字)將流發送到恰好254個可能的設備“ 192.168.1.2-255”,因為我需要確保信息能夠正確到達,並在盡可能短的時間內完成操作。
如果我一次執行一行,並且超時時間為200毫秒(非常短),則該過程將花費51秒。
如果我在不同的線程中執行每一行,則只花一兩秒鍾,但是創建了254個線程以及程序本身具有的線程,盡管它們僅持續一秒鍾。
我要發送的對象是基本的東西,這將是一個類似的示例:
class Usuarios implements Serializable {
private int id,ip;
private String name;
//Constructor, Getters and Setters, etc...
}
有沒有一種方法可以解決此問題,而不必每個周期等待一分鍾或運行超過250個線程?
澄清:可能是這樣的形式,但是執行一個這么多的線程似乎很麻煩,即使它是一秒的周期並每10個重復一次。 我已經看過java.NIO庫,但是它在任何地方都沒有闡明如何發送序列化的代碼。對象。
從已經非常感謝你。
好了,解決方案是通過以下方式使用ExecutorService和Runnable類:
//10 Threads to execute the task
ExecutorService threadpool = Executors.newFixedThreadPool(10);
Runnable task = new Runnable() {
@Override
public void run() {
//Task to do with socket's
}
};
threadpool.submit(task);
threadpool.shutdown();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.