어떻게 확인해야합니까?스레드간에 참조를 비동기 적으로 전달하는 방법은 무엇입니까? 옵저버와?
1) localThread
및 remoteThread
은 서로 독립적으로 실행됩니까?
2.) localThread
과 remoteThread
사이의 메시지를 전달 하시겠습니까?
특히 localThread
의 String 객체는 Telnet
까지 "여과해야"합니다. 콜백으로 알려져 있습니다. 그러나 실제로는 본질적으로 아무 것도 없습니다. Telnet
~ observe
. LocalIO
에 대한 익명 참조이며 명시 적으로 참조를 제공하면 도움이되지 않습니다.
나는 머리가 폭발 할 때까지 java.util.concurrent.Semaphore
에 대해 읽었으며, 내가 떠난 이유는 적용되지 않는 것 같았습니다. 이 두 스레드의 경우 다른 스레드가 수행중인 작업과 상관없이 계속 실행해야합니다. 그러나 스레드간에 객체 참조를 전달할 수있는 메커니즘이 필요합니다 ...
public class Telnet {
public Telnet() throws InterruptedException {
startThreads();
}
public static void main(String[] args) throws InterruptedException {
new Telnet();
}
public void startThreads() throws InterruptedException {
Semaphore s = new Semaphore(1, true);
Thread localThread = new Thread(new LocalIO());
Thread remoteThread = new Thread(new RemoteIO());
localThread.start();
remoteThread.start();
}
}
스레드 자체는 다음과 같습니다. LocalIO
:
public class LocalIO implements Runnable {
@Override
public void run() {
Scanner scanner;
String line;
while (true) {
scanner = new Scanner(System.in);
line = scanner.nextLine();
out.println("\n\nyou entered\t\"" + line + "\"\n");
}
}
}
RemoteIO
: RemoteIO
결코 무기한 연결 및 실행을 종료되지 않습니다 것을 염두에
public class RemoteIO implements Runnable {
private static Logger log = Logger.getLogger(RemoteIO.class.getName());
final String host = "rainmaker.wunderground.com";
final int port = 3000;
@Override
public void run() {
log.fine(host + port);
int byteOfData;
try (Socket socket = new Socket(host, port);
InputStream inputStream = socket.getInputStream();
OutputStream ouputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
while ((byteOfData = inputStream.read()) != -1) {
out.print((char) byteOfData);
}
} catch (Exception e) {
out.println(e);
}
}
}
상태 유지.
롤, 그래,하지만 모든 진지하게, 나는 그것을 체크 아웃 하겠지만 ** 비동기 ** API가 있습니까? – Thufir
방금 설명한 내용은 비동기식입니다. 어느 쪽 스레드도 다른 스레드를 기다리지 않고, 그들이하는 일에 착수하고, 느낄 때마다 새로운 메시지를 확인합니다. –