using AD.SocketForm.Model; using NLog; using System; using System.Net.Sockets; using System.Threading; namespace AD.SocketForm.Service { /// <summary> /// Socket连接类-可指定超时时间 /// 参考网址://www.cnblogs.com/weidagang2046/archive/2009/02/07/1385977.html ///
一开始,选用Vector<E>来存放连接.由于这个容器不是并发安全的,于是,每个方法都加一个synchronized来保持并发时的同步操作,并发效率很差,果断放弃.空余时间研究了下多线程的并发知识,决定用并发安全的阻塞队列(LinkedBlockingQueue<E>),这个容器可以自动维护容量的大小,就免去了再起一个线程去维护线程池的大小.为了保证每个连接是可用的,为线程池启动了一个守护线程去定时发送心跳. 程序如下,欢迎高手们指点缺陷: public class SocketC