java 多线程使用方法及Socket的使用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class newThread implements Runnable{ public void run(){ dosome(); } public void dosome(){ System.out.println("ss"); } } class testThread{ public static void main(){ Runnable ThreadTask = new newThread(); Thread s = new Thread(ThreadTask); s.start(); System.out.println("back in main"); } }
去专门定义一个类调用Runnable接口,但因为该接口位于java.lang包,因此无需import。
新建一个线程只需在位于主线程的main函数里声明一个Thread对象,形如:
Thread aThread = new Thread(ThreadTask);
这个ThreadTask为使用了Runnable接口的类,并且该接口中只存在一个run方法
//补充网络联机部分:
在服务器上写的服务器程序:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
ServerSocket serverSock = new ServerSocket(4242)//表示在服务器上使用4242这个端口来接收用户消息 while(true){ Socket sock = serverSock.accept();//如果服务器的4242端口收到了信息,则serverSock.accept()返回true,新建一个端口想客户端发送信息 //如果4242没有收到信息则代码会停止在上一行 PrintWriter writer = new PrintWriter(sock.getOutputStream()); writer.println("sssss"); writer.flush();//因为输出时,只有等到缓冲区满了才输出,有些时候输出的内容比较少的时候,没有充满缓冲区,不会立刻输出 }
客户端向服务器发信息也是用PrintWriter
客户端读取来自服务器的信息:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Socket sock = new Socket("10.2.132.70",4242);//与服务器连接 InputStreamReader streamReader = new InputStreamReader(socket.getInputStream()); BufferedReader reader = new BufferedReader(streamReader); String advice = reader.readline(); reader.close();