我以前發佈了一個關於Java線程的查詢。 (link text)Java線程懷疑
根據我收到的答案,我決定實施它們。所以我在2個CPU核心的機器上完成了這一點編碼。的代碼如下
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(正在使用超級終端2個實例)和我理解預期的行爲應該是隻要連接到任何端口(80或81),就應該打印「連接到端口」端口號「」。但我從這段代碼得到的輸出是,如果我只連接到1端口,那麼所需的輸出不會被打印,如果我連接到兩個端口,一個接一個,輸出僅在兩個端口後打印連接。所以這又讓我對最初的困惑是這兩個線程是併發執行還是執行在這兩個線程之間交替。
任何建議都會有很大的幫助。
乾杯
+1不讀取Java API文檔:) – willcodejavaforfood 2010-01-22 11:47:34