java socket和多线程(Thread)实例
1. socket通信:有客户端和服务端的socket代码。
2.
多线程:客户端和服务端各用一线程发送信息;服务端另有一监听线程,用于把超时的信息删除。
这里应用到了同步,使两个线程可以操作同一个map。
代码:(类全在同一个包内)
server端:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import java.util.HashMap;
import java.util.Map;
public class ServerNet {
// 以毫秒为单位
private final static long timeLimit = 10000 ;
private Map<String,String> map = Collections.synchronizedMap(new HashMap<String,String>());
public void ServerSocketNet(){
try{
ServerSocket ss = new ServerSocket(6060);
Socket s = ss.accept();
// 用于获取客户端传输来的信息
BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));
// 用于获取服务端准备响应的信息
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// 发送服务端准备响应的信息
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
pw.println("您已经成功建立连接!");
new ServerOutNet(pw, in);
new ServerTimeListener(map, timeLimit);
// 显示客户端的传输来的信息
while(true){
String str = buff.readLine();
if(str.equals("exit")){
break;
}else{
map.put(ServerHelper.getInstance().getMapKey(), str);
System.out.println(str + " map.size: " + map.size());
}
System.out.println("To Client:");
Thread.sleep(100);
}
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
new ServerNet().ServerSocketNet();
}
}
/**
* server发送线程 向客户端发送响应信息
* @author ids-user
*
*/
class ServerOutNet extends Thread{
pri
相关文档:
JAVA相关基础知识
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并 ......
·if ((ICO2 = getInitParameter("ICO2")) == null)
ICO2 = "images/commend.gif";
·ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST); ......
public class Test {
public static void main(String args[]) {
System.out.println(Integer.toBinaryString(20)); //十进制-->2进制
System ......
局部变量:在函数或方法中的变量
实例变量:类的一个实例,就是一个对象。
成员变量:类中的变量(方法中的变量除外)
类变量: 类中的静态变量
局部,实例,成员变量,生存周期和作用域一致
类变量:作用域public全局的,private在本类中。生命周期和全局变量一致 ......
在开发项目工程时,经常会遇到保存某些值放到系统的cache中,现用Cache.java和CacheManager.java来管理。具体代码分别如下:
public class Cache {
private String key;
private Object value;
&n ......