Làm cách nào để thiết kế vòng lặp đọc và ghi hoạt động trên một ổ cắm đơn (hỗ trợ hoạt động đọc và ghi song song)? Tôi có phải sử dụng nhiều luồng không? Là giải pháp (java) của tôi có tốt không? Còn lệnh ngủ đó thì sao? Làm thế nào để bạn sử dụng nó trong vòng lặp như vậy?Cách thực hành tốt nhất để đọc/ghi vào ổ cắm máy chủ java
Tôi đang cố gắng sử dụng 2 Chủ đề:
đọc
public void run() {
InputStream clientInput;
ByteArrayOutputStream byteBuffer;
BufferedInputStream bufferedInputStream;
byte[] data;
String dataString;
int lastByte;
try {
clientInput = clientSocket.getInputStream();
byteBuffer = new ByteArrayOutputStream();
bufferedInputStream = new BufferedInputStream(clientInput);
while(isRunning) {
while ((lastByte = bufferedInputStream.read()) > 0) {
byteBuffer.write(lastByte);
}
data = byteBuffer.toByteArray();
dataString = new String(data);
byteBuffer.reset();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Viết
public void run() {
OutputStream clientOutput;
byte[] data;
String dataString;
try {
clientOutput = clientSocket.getOutputStream();
while(isOpen) {
if(!commandQueue.isEmpty()) {
dataString = commandQueue.poll();
data = dataString.getBytes();
clientOutput.write(data);
}
Thread.sleep(1000);
}
clientOutput.close();
}
catch (IOException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
đọc thất bại trong việc đưa ra một kết quả hợp lý, vì không có -1 gửi. Làm cách nào để giải quyết vấn đề này?
Vòng ngủ/ghi này có phải là giải pháp tốt không?
Đây có phải là Java không? Vui lòng gắn thẻ ngôn ngữ –
đây là java, nhưng đây là một câu hỏi thiết kế và không liên quan đến bất kỳ tính năng java nào – Schifty
Đúng, nhưng nó làm cho câu hỏi cụ thể hơn –