语言是Java,问题是:让一些应用程序监听端口,这个应用程序是多线程的,线程保存在ThreadLocals Set中。通过打开一个套接字来传输和传输文件,我可以打开套接字并将其传递给特定的线程?应用程序已经在套接字之间传输X-interface的特定可序列化对象。
答案 0 :(得分:1)
我同意彼得。但如果你退后一步,验证你的设计并确定你确实需要这个,我认为你可以按照以下方式进行。
您应该在协议中添加任何线程指示。假设您调用线程1,2,3等。因此,从客户端发送的每个命令都应包含它专用的线程ID。侦听线程应提取此值并将任务提交到特定线程。我不知道你是否可以使用自己需要的现有线程池来完成它。但不用担心:如果您的线程池很简单(即没有动态更改线程数等),那么编写自己的线程池只需10行代码:创建线程列表List<Thread>
,并填充写入循环它:threads.add(new Thread())
。
每个线程都应该在自己的Runnable
s队列中等待。当新任务到达Thread #n时,只需创建runnable并将其放入相应的队列中。
答案 1 :(得分:0)
拥有工作线程的最简单方法是使用单线程的ExecutorService(如果你愿意,可以使用池)然后你可以用
给它任务ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() { ... });
executor.shutdown();
不确定为什么要将Threads保留在ThreadLocal变量中。也许现在是时候从你的设计中退后一步,问问自己是否可以用更简单的方式做到这一点。