叶存菜鸟笔记多线程应用与echo案列
2015-08-24 20:08
330 查看
1,、回顾多线程定义,继承类Thread,或者 实现Runnable接口,无论使用哪种方式,定要 覆写run()方法,最后在调用时,使用对象.start(),便可实现多线程运行程序。
2、在应用时和Echo经典案例相似,在需将哪个端口需要多线程时将其单独形成一个实现类。代码如下:
客户端:
import java.io.*;
import java.util.*;
import java.net.*;
public class EchoThreadApplication implements Runnable{ // 类实现Runnable接口,利用Runnable接口完成多线程
private Socket client=null; //每一个client
public EchoThreadApplication(Socket client){
this.client=client;
}
public void run(){ //覆写run()方法,没有什么不同 ,打印服务器程序
PrintStream out=null;
BufferedReader buf=null;
try{
buf=new BufferedReader(new InputStreamReader(client.getInputStream()));
out=new PrintStream(client.getOutputStream());
boolean flag=true;
while(flag){
String str=buf.readLine();
if(str==null||"".equals(str)){
flag=false;
}else{
if("bye".equals(str)){
flag=false;
}else{
out.println(str);
}
}
}
out.close();
client.close();
}catch(Exception e){
}
}
}
服务器端:
import java.io.*;
import java.net.*;
public class EchoThreadServerApplication {
public static void main(String args[])throws Exception{
ServerSocket server=null; //实例化服务器端接口
Socket client=null; // 实例化客户端
server=new ServerSocket(9999);
boolean f=true;
while(f){
System.out.println(" 服务器正在运行,等待客户端连接。");
client=server.accept(); //接收客户端链接
new Thread(new EchoThreadApplication(client)).start(); 启动一个 线程运行client
}
server.close();
}
}
2、在应用时和Echo经典案例相似,在需将哪个端口需要多线程时将其单独形成一个实现类。代码如下:
客户端:
import java.io.*;
import java.util.*;
import java.net.*;
public class EchoThreadApplication implements Runnable{ // 类实现Runnable接口,利用Runnable接口完成多线程
private Socket client=null; //每一个client
public EchoThreadApplication(Socket client){
this.client=client;
}
public void run(){ //覆写run()方法,没有什么不同 ,打印服务器程序
PrintStream out=null;
BufferedReader buf=null;
try{
buf=new BufferedReader(new InputStreamReader(client.getInputStream()));
out=new PrintStream(client.getOutputStream());
boolean flag=true;
while(flag){
String str=buf.readLine();
if(str==null||"".equals(str)){
flag=false;
}else{
if("bye".equals(str)){
flag=false;
}else{
out.println(str);
}
}
}
out.close();
client.close();
}catch(Exception e){
}
}
}
服务器端:
import java.io.*;
import java.net.*;
public class EchoThreadServerApplication {
public static void main(String args[])throws Exception{
ServerSocket server=null; //实例化服务器端接口
Socket client=null; // 实例化客户端
server=new ServerSocket(9999);
boolean f=true;
while(f){
System.out.println(" 服务器正在运行,等待客户端连接。");
client=server.accept(); //接收客户端链接
new Thread(new EchoThreadApplication(client)).start(); 启动一个 线程运行client
}
server.close();
}
}
相关文章推荐
- json与xml比较
- C++变量存储方式浅析
- 动画AnimatorSet
- Binary Tree SDUT 2499
- 上海外滩附近一日游
- Unity3D汽车物理引擎的安卓重力感应适配
- POJ 3356 AGTC(最长公共子)
- 软件测试系列之软件测试过程模型V,W,H,X等
- 【欧拉函数算法总结&&运算原理&&模板】
- 青蛙的约会(扩展欧几里得模板题(模板已升级))
- ARM寻址方式
- 前端弹出层控件
- static函数和变量(转载)
- iOS 如何更新APP
- JDBC之调用存储过程
- [转] Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- 使用Gson解析管理类
- adaptiveThreshold函数
- SDUTOJ 2080 最长公共子序列问题(LCS)
- eclipse转用android studio——常用快捷键