线程安全
多线程同时操作一份资源,才有可能出现数据不安全
同步锁
多个线程排队执行一段代码synchronized
1 同步条件 : 控制多个线程排队执行的条件,对象的资源锁,每个对象只有一个
2 同步代码块 : 多个线程排队执行的代码块
使用:
方法上synchronized修饰
同步代码块:整个方法体
同步块synchronized(条件){
代码段}
注意 :
同步方法简单,但是可能排队执行的代码范围过大,效率低
同步块,主需要同步最终要的代码,颗粒度较小,效率较高
但是容易出错,代码范围太大,效率低,代码范围太小,容易锁不住
锁要锁不变的东西,自定义的引用数据类型的地址
线程通信
wait()与notify(),notifyAll()实现线程通信
wait : 当一个线程执行到 对象.wait()方法时候,当前线程会进入到一个与该对象相关的等待池中进行等待(等待队列,是阻塞的一种,等待阻塞),同时释放对象锁,并让出cpu的资源,等待执行时间结束|等待被唤醒
sleep : 线程休眠,让出cpu的资源,但是不会释放对象的锁–> 抱着资源睡觉
网络编程
IP : 定位网络中节点
端口 : 区分软件
URL : 统一资源定位符
UDP : 相当于写信,传递包裹 协议简单,开销小,效率高 只管写只管邮 不安全 大小限制
TCP : 相当于打电话 面向连接 安全,但是效率低 没有大小限制 ******
特殊的IP :
192.168.0.0~192.168.255.255 非注册IP ,供组织内部使用的IP
本地IP : 127.0.0.1
本地域名 : localhost
DNS解析器 : IP 与 域名之间的解析
java.net 网络包
InetAddress : 表示IP地址