线性状态;线程安全问题

线性状态共有5个:

1.新生状态  2.就绪状态  3.运行状态  4.阻塞状态  5.结束状态

注意:

1.阻塞状态恢复后进入就绪状态而不是运行,一旦终止就无法恢复

2.sleep()(抱着资源睡觉)——对象锁不释放,cpu资源释放

3.yield() ——让线程

4.join()——插队线程——等上一个线程结束再开始进行下一个进程

5.Thread.State getState() ——返回该线程的状态

6.setPriority(int newPriority) 更改线程的优先级;  getPriority() 返回线程的优先级。

线程安全问题

同步锁: synchronized

同步方法:使用在方法上(静态成员都可以)——简单,但是范围大,可能效率低

同步块:同步一段代码——复杂,锁有的代码的范围,锁什么锁的条件-->this,类,资源(自定义的引用数据类型的成员属性),根据具体的业务逻辑分析优缺点

锁“类”——synchronized (Single.class)——Single.class的class对象,每一个类都只有唯一的一个class对象——锁了类,相当于把类的所有对象都锁住了,效率较低

锁“资源”——条件是资源,成员属性,锁要锁不变的东西,自定义的引用数据类型的对象永远不变

网络编程

ip:定义网络上的节点  特殊的IP:192.168.0.0~192.168.255.255 组织内部IP,非注册IP

端口:区分软件2个字节  0~65535  预留端口号:  80 :http  8080 :tomcat  1532 :oracle  3306 :mysql

url:统一资源定位符

协议:交流的方式——资源传输层:tcp和udp

udp: 非面向连接的 协议简单,开销小,效率高   不安全 一般不超过60k   基于字节数组

tcp: 面向连接的 效率低 安全 基于3次握手  1:发送请求 2.回应 3.发送数据  基于io流

udp实现发送端:  

1.使用  DatagramSocket(int port) 定义发送端  

2.准备数据  

3.数据打包 DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)  

4.发送数据  void send(DatagramPacket p)  从此套接字发送数据报包。

5.资源关闭

udp实现接收端:  

1.定义接收端  

2.准备包裹,接收数据  

3.接收   

4.关闭

  

猜你喜欢

转载自www.cnblogs.com/lingxi2b2/p/11997340.html