在一个简单的测试案例中,我实现了一个线程池服务器,在端口 12345 上接受多达 10 个同时传入的 TLS PSK 连接,并在标准输出中打印解密数据:
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(12345);
ExecutorService pool = Executors.newFixedThreadPool(10);
while (true) {
Socket socket = server.accept();
pool.execute(new MyRunnable(socket));
}
}
这是Runnable
线程使用的实现:
@Override
public void run() {
try {
SecureRandom random = new SecureRandom(); // How to preallocate?
BufferedInputStream bis = new BufferedInputStream(mSocket.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(mSocket.getOutputStream());
TlsServerProtocol proto = new TlsServerProtocol(bis, bos, random);
MockPSKTlsServer server = new MockPSKTlsServer(); // How to preallocate?
proto.accept(server);
Streams.pipeAll(proto.getInputStream(), System.out);
proto.close();
} catch (IOException e) {
System.err.print(e);
}
}
如何预分配SecureRandom
和MockPSKTlsServer
使用的对象Runnable
?
即如何在 中创建两个对象中的 10 个,main()
然后在 中重用它们run()
?