我有多线程java应用程序。我想知道这种方法是否正确。从我的主要方法,我将开始两个线程。一个线程在即将到来的客户端连接中开始侦听(这是一个客户端 - 服务器应用程序)。一旦客户端与服务器连接,它就会启动一个新线程来处理客户端,并继续为所有客户端连接。由主程序启动的另一个线程处理由公共缓冲区中的客户端接收的消息。
我的问题是: 主线程启动一个线程(服务器),这个线程反过来启动许多线程。这是对的吗?
答案 0 :(得分:1)
有一个问题。可以在服务器上同时创建多个线程,并且您可以使用DOS(拒绝服务)。 我建议使用java.util.concurrent.ExecutorService实现。
例如:
Runnable yourRunnable;
ExecutorService executorService = Executors.newFixedThreadPool(50);
executorService.submit(yourRunnable);
答案 1 :(得分:0)
你在这里使用某种错误的方法......
主程序启动的另一个线程处理消息 由共享缓冲区中的客户端接收。
为什么要为所有客户端使用公共缓冲区? NOT 线程安全。
更好的方法:
处理客户端的线程也应该处理自己的缓冲区。因此,当任何客户端连接时创建新线程,并为每个客户端创建新的缓冲区以供读取和写入。
答案 2 :(得分:0)
是主线程可以启动其他线程。如果父线程退出则没有问题,子线程将运行。请使用主线程接受新连接和其他线程来处理客户端请求,然后处理客户端线程应该维护自己的输入输出流。