多线程的通信程序,主要负责从数据库中的指令表读取指令数据,转发到不同地址的设备;同一个设备一次只能接收处理一条指令数据,也就是说针对同一地址的指令,只能在此设备处理完成上一条指令后再接收下一条指令;请教该如何处理?
另外,在多线程通信过程中,刚开始运行时操作都正常,运行一段时间后,就出现以下错误:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
请教如何处理?
------解决方案--------------------
按照你的问题,这里有两种线程实体:
1) 查询任务并将任务加入到任务队列的线程,一个 (T)
2) 从任务队列获取任务并执行的线程(个数与设备对应),多个 (Ti)
公共数据:
任务队列Q。
T和N个Ti共享数据对象Q。 一个线程去修改Q,N个线程去查询Q,这里需要做T和Ti之间的同步
而不同Ti会并发的读取Q,所以Ti之间也有个同步
第二个问题:看看你的数据库连接资源是否正确关闭,否则资源耗尽一样无法连接