이전에 자바 스레드에 대한 쿼리를 게시했습니다. (link text)Java threads doubt
내가받은 대답에 따라, 나는 그것을 구현하기로 결정했습니다. 그래서 2cpu 코어가있는 머신에서이 비트의 코딩을 수행했습니다.
import java.net.*;
import java.io.*;
public class thready implements Runnable{
private Socket num;
public thready(Socket a) {
this.num=a;
}
public void run() {
try {
BufferedInputStream is = new BufferedInputStream(num.getInputStream());
System.out.println("Connected to port"+num);
} catch (IOException ex) {
//Logger.getLogger(thready.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String [] args)
{
int port = 80;
int port1= 81;
//int count = 0;
try{
ServerSocket socket1 = new ServerSocket(port);
ServerSocket socket2 = new ServerSocket(port1);
while (true) {
Socket connection = socket1.accept();
Socket connection1 = socket2.accept();
Runnable runnable =new thready(connection);
Runnable run= new thready(connection1);
Thread t1=new Thread(runnable);
Thread t2=new Thread(run);
t1.start();
t2.start();
}
}
catch(Exception e)
{
} }}
이제 임 테스트 하이퍼 터미널을 사용하여이 코드 조각을 다음과 890 포트 81 (하이퍼 터미널의 두 인스턴스를 사용하고) 모두 포트에 연결하고 그리고 난 그것을 이해 예상되는 동작이어야하는 코드는 어떤 포트 (80 또는 81)에 연결되자 마자 "포트에 연결된 포트 번호"가 인쇄되어야합니다. 그러나이 코드 조각에서 여기에 도착하는 출력은 필요한 출력이 인쇄되지 않고 하나의 포트에만 연결되면 다른 포트 다음에 하나씩 연결되면 두 포트 모두 출력됩니다. 연결되어있다. 따라서이 두 스레드가 동시에 실행되고 있는지 또는 실행이이 두 스레드간에 번갈아 가는지에 대한 초기 혼동으로 이어진다.
어떤 제안이라도 도움이 될 것입니다.
건배
자바 API 문서를 읽지 않는 경우 +1 : – willcodejavaforfood