03 2021 档案
摘要:使用反射操作资源(二十七) 类的加载过程 Java中的类是怎样被加载最终被我们使用的呢,在Java中类的记载过程总体分为3步: 装载:查找到类并将类的数据转化成二进制格式保存 链接: 验证:检查类中的格式是否有问题,或者是否有安全问题等 准备:为类中的静态变量分配内存,并给初始化的值 解析:把类中的
阅读全文
摘要:注解与反射 注解 注解是什么? 注解是种特殊的注释,如果说注释是给人看的话,那么注解就是给程序看的。 Java的注解可以分为三类 第一类是由编译器使用的注解,如@Override和@SuppressWarning,这类注解不会被编译进.class文件中,它们在编译后就被编译器抛弃 第二类是由工具处理
阅读全文
摘要:生产者与消费者(二十五) 在多线程的开发中,如果生产者创建资源的速度很快,而消费者消费的速度慢,这时生产者就要去等待消费者,这样会影响到处理的效率,反之亦然。为了处理这样的场景,我们需要准备一个缓冲区,即一个池子,生产者生产好后将资源存在缓冲区中,当缓存区满了就停止生产,消费者直接从缓存区中获取资源
阅读全文
摘要:死锁(二十四) 什么是死锁 死锁指的是两个线程分别获取对方手上的资源,导致两个线程都阻塞,程序卡死的情况。就好比有两个玩具,两个小孩人手一个,这时两个小孩都想要对方手上的玩具;当然,作为人我们可以相互交换,但是计算器没有这么聪明,就相互卡死了。 package com.unsafe; public
阅读全文
摘要:三大线程不安全案例与线程同步(二十三) 不安全的案例 不安全的集合 在下面的例子中,我们创建了1000个线程往List中添加数据,最后输出这个List的长度。运行一下我们发现,List的长度很少能有1000,经常在九百多。这是因为多个线程同时操作了一个数据,有的List元素被更新了,所以长度达不到期
阅读全文
摘要:线程状态(二十二) Daemon守护线程 在Java中我们默认开启的线程都是用户线程,而守护线程的作用就和他的名字一样,是守护着我们的用户线程运行;我们可以把用户线程和守护线程的关系理解成长跑运动员和陪跑员的关系。 我们先看一个例子: package com.thread; public class
阅读全文

浙公网安备 33010602011771号