1)
线程安全***
多线程同时操作同一份资源,才有可能出现数据不安全问题
同步锁:(多个线程排队执行一段代码) synchronized
部分:
1)同步条件 : 控制多个线程排队执行的条件
对象的锁资源,每个对象只有一个
2)同步代码块 : 多个线程排队执行的代码段
使用:
同步方法 : 方法上synchronized修饰
成员方法: 调用方法的对象
静态方法: 类的Class对象
同步代码块 : 整个方法体
整个方法体多个线程之间排队执行
同步块:
synchronized(条件){
排队执行的代码段;
}
条件 : 对象的锁
this-->指代调用成员方法的对象
类的Class对象 --> 每一个类只有一个,唯一不变的,类加载到内存中就存在
获取一个类型的Class对象 ->类名.class
锁类->如果多线程共享一份资源控制同步问题,与锁this没有区别
但是如果多线程每个线程操作自己的资源,锁类也需要多个线程排队执行,效率较低-->推荐锁this
资源对象 ->了解 资源-->成员变量
当对象中存在多个资源,可以使用锁资源只锁定其中的某一个资源(成员),其他线程使用其他资源的不需要与当前排队执行,效率较高
锁自定义引用数据类型对象地址
注意:
同步方法简单,但是可能排队执行的代码范围过大,效率低
同步块,主需要同步最终要的代码,颗粒度较小,效率较高
但是容易出错,代码范围太大,效率低,代码范围太小,容易锁不住
锁要锁不变的东西,自定义的引用数据类型的地址
[endif]******
3)线程通信
实现生产者消费者模式
wait()与notify(),notifyAll()实现线程通信
要求使用在同步环境下,用于协调多线程对共享数据的存储问题
wait()与notify(),notifyAll()方法凯子与Object类中的方法
wait :当一个线程执行到 对象.wait()方法时候,当前线程会进入到一个与该对象相关的等待池中进行等待(等待队列,是阻塞的一种,等待阻塞)
同时释放对象锁,并让出cpu的资源,等待执行时间结束|等待被唤醒
sleep :线程休眠
让出cpu的资源,但是不会释放对象的锁-->抱着资源睡觉
notify :当一个线程执行到 对象.notify()的时候,会唤醒当前对象等待池中正在等待的线程,处于就绪状态,想要继续执行需要获取对象的锁并被cpu调度才能执行
*****网络编程
网页编程 : 上层应用
网络编程 : 底层数据的传输
IP :定位网络中节点
端口: 区分软件
URL :统一资源定位符
传输层协议 : 交流方式,标准,合同.
传输更加畅通,更加规范,更加标准.
UDP :相当于写信,传递包裹 协议简单,开销小,效率高 只管写只管邮 不安全 大小限制
TCP:相当于打电话 面向连接 安全,但是效率低 没有大小限制 ******
IP :
定位节点 : 电子设备,手机,计算机,,,
IPV4:4个字节 32位
IPV6 : ...
特殊的IP :
192.168.0.0~192.168.255.255 非注册IP ,供组织内部使用的IP
本地IP :127.0.0.1
本地域名:localhost
DNS解析器:
IP 与 域名之间的解析
java.net网络包
InetAddress :表示IP地址