day19
课程
part1.多线程
线程
- 1.进程是资源分配的最小单位,线程是处理器调度的最小单位
- 2.当一个类要实现线程,则必须继承Thread类或者Runable接口
- 3.必须重写父类的run方法,run方法的头部是:public void run()
- 4.通过start方法启动线程,启动以后系统会自动调用run方法
- 5.Thread类中有用于启动线程的start方法,而Runable中没有
- 6.当一个类实现了Runable接口,从而实现线程以后,可以通过如下方法启动线程:
-
My my=new My(); //创建Thread对象 Thread thread=new Thread(my); //启动线程 thread.start();
1.
try {
Thread.sleep(1000);
System.out.println("你好");
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
如果一个类继承了Thread类,那么就可以直接使用类名调用静态方法sleep(),用来使进程在一定的时间内休眠
MyTread thread=new MyTread();
//启动线程
thread.start();
在启动进程时应创建新对象,并调用start()方法,而不是run()方法
2.
try {
Thread.sleep(2000);
System.out.println("成功了");
} catch (InterruptedException e) {
e.printStackTrace();
}
这里展示的时实现了Runable接口的类
My my=new My();
//创建Thread对象
Thread thread=new Thread(my);
//启动线程
thread.start();
在创建对象时应该使用多态的方法创建对象,并用Thread类对象调用start()方法
part2.网络编程
//创建客户端的Socket对象
Socket socket=new Socket("192.168.11.181",5000);
首先创建客户端的Socket对象,这里使用的ip地址是本机的
OutputStream outputStream=socket.getOutputStream();
String resString="我是客户端,你好服务器";
byte c[]=resString.getBytes();
outputStream.write(c);
通过套接字获取输出流,再通过输出流输出
socket.shutdownOutput();
如果想再次使用5000接口,需要关闭输出流
InputStream inputStream=socket.getInputStream();
InputStreamReader reader=new InputStreamReader(inputStream);
int date=0;
while((date=reader.read())!=-1){
System.out.print((char)date);
}
通过输入流接收数据并打印
reader.close();
inputStream.close();
outputStream.close();
socket.close();
最后别忘了依次关闭资源
//创建服务器端的ServerSocket套接字,注意端口要和客户端端口号一致
ServerSocket serverSocket=new ServerSocket(5000);
在服务器端需要先创建ServerSocket套接字
Socket socket=serverSocket.accept();
再调用accept()方法用于监听服务器端接收的请求,返回值为Socket对象
InputStream inputStream=socket.getInputStream();
InputStreamReader reader=new InputStreamReader(inputStream);
int date=0;
while((date=reader.read())!=-1){
System.out.print((char)date);
}
这里为服务器端接收到客户端的信息并打印出来
OutputStream outputStream=socket.getOutputStream();
String kkString="我是服务器,你好客户端";
byte b[]=kkString.getBytes();
outputStream.write(b);
服务器端再返回一句话给客户端
socket.shutdownOutput();
outputStream.close();
reader.close();
inputStream.close();
socket.close();
serverSocket.close();
最后别忘了关闭输出流并关闭资源
总结:
今天学的知识很少,应该掌握好多线程的使用以达到增加编程效率的作用,网络编程使用较少,适当学习即可。