本帖最后由 小石姐姐 于 2018-4-26 09:43 编辑
笔记
多线程
多线程就是一个程序中有多个线程在同时执行.
实现多线程有两种方法。
方法一
1.定义一个类继承Thread。 2.重写run方法。 3.创建子类对象,就是创建线程对象。 4.调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run方法 方法二 声明实现 Runnable 接口的类。该类然后实现 run 方法。然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。 1、定义类实现Runnable接口。 2、覆盖接口中的run方法。。 3、创建Thread类的对象 4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。 5、调用Thread类的start方法开启
多线程比较单线程小路更高但安全性低 因为CPU是切换执行进程的使用多线程可能导致一段程序运行到一半突然又被另一个线程执行而带来计算数据的错误 虽然速度比较快但是得到的结果却是错误的导致多线程所以并没有什么卵用。 由于这个缺陷 就有了应对方案 synchronized 无论是作为代码块使用还是用作方法来使用都可以解决 这个问题。使得多线程更安全。 但同时也降低了程序的执行效率,优点是可以多个进程同时执行被多个用户端访问。
面向网络编程 我们平时上网就是从服务端下载我们需要的数据或者从我们这里用户端上传数据到服务端。 计算机是如何实现信息交换的呢。 我们的网络设备都有一个IP地址和子网掩码。 IP地址是路由器从地址池随机分配的是唯一的。子网掩码表示网络位置。 信息在网络中以数据帧的形式传播 一个帧分 中包含着接受端的IP地址 自己的IP地址 使用的协议类型 和数据字段 我们学习了UDP和HTTP两种协议 :
Socket 套接字 可以连通另一端网络设备需要IP地址和端口。连通之后就可以通过IO流来获取和发送信息了。
比如 张三 要给李四发消息 “饭已OK啦回来密西吧”;
public class ClientDemo {
public staticvoid main(String[] args) throws IOException { //创建发送端Socket对象(创建连接) Sockets = new Socket(InetAddress.getByName("lisi"),10086);//李四的计算机名叫李四 通过InetAddress.getByName("lisi")来获取它的IP地址 //获取输出流对象 OutputStreamos = s.getOutputStream(); //发送数据 Stringstr = "饭已OK啦回来密西吧"; os.write(str.getBytes()); //释放资源 s.close(); 这端数据会从10086端口发出去然后被http协议打包成一个帧 帧中的数据字段最小64个字节最大1500字节太大或太小都会被丢掉对方会收不到 http协议会发送一个确认报文来确认数据有没有被接收端收到。如果没有收到会再发一遍。 但UDP协议不会。丢了也不管继续发。 所以UDP协议现对与httP协议更快。http协议更安全完整。 |