- 相關(guān)推薦
sun認(rèn)證考試輔導(dǎo):java關(guān)于多線程的部分操作
隨著計算機(jī)技術(shù)的發(fā)展,編程模型也越來越復(fù)雜多樣化。但多線程編程模型是目前計算機(jī)系統(tǒng)架構(gòu)的最終模型。下面yjbys小編為大家分享的是java多線程的部分操作方法,希望對同學(xué)們有所幫助!
一般服務(wù)器端代碼,每次收到一個線程,一個client就會產(chǎn)生:
/************************ 開始監(jiān)聽 **************************/
int port = 4311;
ServerSocket server = null;//服務(wù)器
Socket client = null;//客戶端
try {
server = new ServerSocket(port);
} catch (IndirectionException e1) {
System.out.println("正在監(jiān)聽……");
}
while(true)
{
System.out.println("等待客戶"+i);
i++;
try {
client = server.accept();//開始監(jiān)聽線程,接收到client
System.out.println("客戶地址:" + client.getInetAddress());
} catch (IOException e1) {
System.out.println("正在等待客戶");
}
}
客戶端代碼,啟動之后便會連接服務(wù)器,得到回應(yīng)之后便會形成socket連接
Socket clientsocket = null;
try {
clientsocket = new Socket("localhost",4311);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket的輸入和輸出一般用流來相互寫。
in.read()和out.write(),
in.readObject()和out.writeObject(object)。
客戶端的一個線程里面同時new了多個ObjectOutputStream流是不允許的,其它的流可以。ObjectOutputStream有鎖機(jī)制。
如果是一般的輸入和輸出流的話用:
DateOutputStream out = null;
DateInputStream in = null;
//獲得輸入輸出流
try {
out=new DateOutputStream(socket.getOutputStream());
in=new DateInputStream(socket.getInputStream());
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
如果是對象上的輸入和輸出的話用:
ObjectOutputStream out = null;
ObjectInputStream in = null;
//獲得輸入輸出流
try {
out=new ObjectOutputStream(socket.getOutputStream());
in=new ObjectInputStream(socket.getInputStream());
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
如果復(fù)雜之后,可以是服務(wù)器啟動之后對每個客戶端啟動一個線程與客戶端的線程進(jìn)行交互。
【sun認(rèn)證考試輔導(dǎo):java多線程的部分操作】相關(guān)文章:
sun java認(rèn)證考試介紹10-23
Sun Java認(rèn)證考試科目08-30
SUN JAVA認(rèn)證介紹12-18
Sun認(rèn)證Java開發(fā)員考試介紹10-09
sun認(rèn)證考試經(jīng)驗:多線程的幾種實現(xiàn)方法詳解01-22
sun java認(rèn)證報考指南09-07