Java基础
Java基础相关总结
Melody1211
这个作者很懒,什么都没留下…
展开
-
wait() notify() notifyall()如何实现的
在看Thread.join()的源码时,发现实现是在一个等待通知的经典范式下实现的join方法。在等待过程中使用的wait(0),忽然想到wait()是如何实现的,为什么wait方法需要先获得锁,再使用锁调用wait方法。这其实也是一种通信机制,通过线程之间共享内存的通信机制。每个对象都会有一个等待集合和阻塞集合,而存储的就是采用此对象作为锁调用wait()方法的线程对象和因竞争锁而阻塞的线程对象。那么回到这个问题,先获得锁再用锁调用wait()方法那么当前线程对象也就存储在了wait集合里。那么,在调用原创 2020-11-29 10:07:52 · 224 阅读 · 0 评论 -
Java序列化 static和transient
在学习Java序列化的过程中,对static和transient这两个关键字进行了测试,发现了这两个关键字很有意思的特点。首先被static和transient这两个关键字修饰的成员变量,在通过集成Serializable接口实现可序列化的过程中都不会被序列化,而是存储对应成员变量的默认值(如果在类中进行了初始化,则存储对应的初始化值)。但在测试的过程中发现了两个有意思的现象,在这里进行记录。在实例化对象后,修改静态变量的值后再序列化,反序列化后得到的值为修改后的值而不是静态变量的初始值(这与不序列原创 2020-11-04 16:57:36 · 660 阅读 · 0 评论