2

我正在设计 Android 软件,我必须在其中监听 n 个端口,比如说 10 个。每 100 毫秒我想检查端口是否有一个新的 UDP 数据包。收到数据包后,里面的数据应该传递给UI线程。

我的问题是我应该使用一个线程从所有不同的端口接收数据,还是应该为每个端口创建自己的线程,每个线程都以 100 毫秒的间隔运行?在这些情况下,好的做法是什么?

当端口有数据时,它被反序列化为一个对象,然后用于在 UI 线程中更新视图中的数据。

我对套接字编程和更高级的并发编程很陌生,所以我一直在犹豫,没有从网上找到任何好的答案。

4

2 回答 2

1
My question is should I use one thread to receive data from all different ports or 
should I create own thread for every port, each timed to run at 100ms interval? 
What is the good practice in these cases?

这并不重要。如果您创建一个线程,则必须跟踪不同的端口。如果您创建多个线程,则必须跟踪所有这些线程。由于现在 cpu 通常是多线程的,所以我会选择多线程。

至于 100 毫秒的定时器间隔,你可以创建一个定时器,循环遍历所有线程并从这些线程中收集数据。确保将其锁定,这样如果在前一个事件仍在忙于收集数据时计时器已过,这两者就不会相互干扰。

于 2013-07-31T12:13:34.083 回答
1

每个套接字都有一个线程似乎有点矫枉过正,除非反序列化对象的时间过长,否则您将看不到任何好处。

就个人而言(就像 bas 指出的那样;里面没有太多内容)我会从简单的开始,让一个线程循环检查 10 个端口并在检查之间休眠。如果您开始发现线程处理数据花费了太多时间并且每个端口被检查的时间太长,那么您可以在此时向池中添加更多线程。

于 2013-07-31T12:31:50.033 回答