隨著計算機技術的發展,程式設計模型也越來越複雜多樣化。但多執行緒程式設計模型是目前計算機系統架構的最終模型。下面yjbys小編為大家分享的是java多執行緒的部分操作方法,希望對同學們有所幫助!
一般服務器端程式碼,每次收到一個執行緒,一個client就會產生:
/************************ 開始監聽 **************************/
int port = 4311;
ServerSocket server = null;//伺服器
Socket client = null;//客戶端
try {
server = new ServerSocket(port);
} catch (IndirectionException e1) {
tln("正在監聽……");
}
while(true)
{
tln("等待客戶"+i);
i++;
try {
client = pt();//開始監聽執行緒,接收到client
tln("客戶地址:" + netAddress());
} catch (IOException e1) {
tln("正在等待客戶");
}
}
客戶端程式碼,啟動之後便會連線伺服器,得到迴應之後便會形成socket連線
Socket clientsocket = null;
try {
clientsocket = new Socket("localhost",4311);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
tStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
tStackTrace();
}
socket的輸入和輸出一般用流來相互寫。
()和e(),
Object()和eObject(object)。
客戶端的一個執行緒裡面同時new了多個ObjectOutputStream流是不允許的,其它的'流可以。ObjectOutputStream有鎖機制。
如果是一般的輸入和輸出流的話用:
DateOutputStream out = null;
DateInputStream in = null;
//獲得輸入輸出流
try {
out=new DateOutputStream(utputStream());
in=new DateInputStream(nputStream());
} catch (IOException e2) {
// TODO Auto-generated catch block
tStackTrace();
}
如果是物件上的輸入和輸出的話用:
ObjectOutputStream out = null;
ObjectInputStream in = null;
//獲得輸入輸出流
try {
out=new ObjectOutputStream(utputStream());
in=new ObjectInputStream(nputStream());
} catch (IOException e2) {
// TODO Auto-generated catch block
tStackTrace();
}
如果複雜之後,可以是伺服器啟動之後對每個客戶端啟動一個執行緒與客戶端的執行緒進行互動。