【发布时间】:2016-11-18 12:09:33
【问题描述】:
在a simple test case 中,我实现了一个线程池服务器,在端口 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);
}
}
如何预分配Runnable使用的SecureRandom和MockPSKTlsServer对象?
即如何在 main() 中创建 10 个这两个对象,然后在 run() 中重用它们?
【问题讨论】:
-
您使用哪个版本的 Java?
-
我在 Windows 和 Linux 上使用 Java SE 1.8
标签: java ssl threadpool bouncycastle tls-psk