2017-02-24 70 views
0

自从我学习了多线程概念之后,我觉得自己有点'触发快乐',每当我需要完成一项新任务时添加线程,以及我担心我会有点过度。使用UDP监听端口而不会产生另一个线程

有没有什么办法可以在DatagramSocket(以java为例)上侦听而不创建线程并阻止它?这是普遍接受的方式,还是有更好/更标准的方式?

+0

线程有什么问题? :)他们是这样的任务使用的东西 – borowis

+0

我不是一个真正的java人,但我确信有一种方法可以使用'select'或'poll'系统​​调用。从简短的网页搜索看来,'java.nio.channels'就是要走的路。查找'DatagramChannel',它可以用一个'Selector'注册,这样您就可以一次等待多个通道,并且还可以实现超时。 –

+1

@GilHamilton很酷!我想我只会采用线程方式。我只是担心我制作了太多的Java线程,但我想这就是多线程的要点。多谢你们! –

回答

0

@Brydon Gibson:如果你不想创建一个线程,你可以使用主线程或当前线程。

但是你必须知道,使用socket.receive()方法进行侦听时,该线程将被阻塞。我不知道这是你想做什么。

顺便说一句,你只需要一个线程来监听你的套​​接字。

UDP Client/Server