emb*_*bry 4 java gps multithreading
我有一个带有两个不同线程的Java应用程序,它执行以下操作:
1.第一个线程(它是一个ThreadPool) - 监听一个端口,查找来自五个不同用户的传入连接.
我们打电话给他们:
user1 user2 user3 user4 user5
他们每个人都发送GPS数据.
2.第二个线程同时我的java应用程序监听第二个端口,等待另一个客户端(不同于发送GPS数据的客户端)连接到它.
现在......我有第二个应用程序连接到我刚才描述的java应用程序.
在第二个应用程序中,我有一个列表user1 ... user5,具体取决于我将选择哪个项目(user1 ... 5)我必须从我选择的用户那里收到正确的数据.此外,所有这些数据都将存储在DB中的第二个用户处.
现在任何人都可以给我一个暗示如何在线程之间共享所有这些数据????
我尝试使用Singleton类和BlockingQ,但似乎没有一个适合因为数据丢失!
Java中的并发执行通常依赖于"共享内存",因此只需确保两个线程中的代码共享对可以交换信息的公共数据结构的引用.
您需要确保的是,以同步/线程安全的方式访问此结构.这可以通过使用synchronized关键字(不推荐)或使用java.util.concurrent包中的类(推荐)手动完成.
A BlockingQueue可能很适合你.你在尝试这门课时遇到了什么问题?
问题是从BlockingQueue读取的线程需要区分BlockingQ中写入的数据(来自user1,2,3的数据......).
我建议你创建一个UserData包含数据和来自哪个用户的类.(并将其存储在BlockingQueue<UserData>.)
BlockingQ可以保留多长时间和多少数据????因为所有这些数据都需要存储在我的第二个应用程序的数据库中...所以我可以负担得起任何一个!!!!!!!!!! !
该BlockingQueue实际上是一个接口,但它的(所有标准的实现ArrayBlockingQueue,LinkedBlockingQueue...)都可以保持数据的任意ammount的(即,仅受可用内存的计算机上的ammount的限制).