JDK、JUC篇
文章平均质量分 80
巩固java基础、学习底层知识
遇事不决问清风
很少写代码,更注重思考
展开
-
【Java并发编程的艺术】读书笔记——Java中的线程池实现原理
1、为什么要使用线程池(优点)2、线程池的实现原理3、线程池的创建以及核心参数4、如何合理地创建线程池1、为什么要使用线程池(优点)避免重复的进行线程的创建和摧毁,可以减少不必要的资源开销;任务到达后,可以直接获取线程执行,提高了响应速度;可以交给线程池统一进行管理,提高线程的可管理性;2、线程池的实现原理当向线程池提交一个任务时,线程池是怎样处理这个任务的呢?ThreadPoolExecutor主要执行execute()来实现的,如下图:原创 2022-04-04 08:00:00 · 1246 阅读 · 15 评论 -
【Java并发编程的艺术】读书笔记——Java并发编程基础
1、线程的几种状态线程在运行的生命周期中可能处于六种状态其一:新建(初始)、就绪、运行、等待、阻塞、终止。线程在自身的生命周期中,并不是固定地处于某个状态,而是**随着代码的执行在不同的状态之间进行切换**;Java 线程状态变迁原创 2021-12-25 13:36:17 · 758 阅读 · 32 评论 -
【Java并发编程的艺术】读书笔记——Java并发机制的实现原理(volatile和synchronized)
学习参考资料:《Java并发编程的艺术》文章目录1.volatile1.1volatile定义1.2volatile实现原理2.synchronized2.1synchronized简介2.2对象头2.3锁的升级2.4锁的对比3.原子操作的实现原理3.1什么是原子操作?3.2Java如何实现原子操作在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。1.volatile.原创 2021-12-23 14:50:14 · 651 阅读 · 27 评论 -
【Java并发编程的艺术】读书笔记——并发编程的挑战
学习参考资料:《Java并发编程的艺术》1.上下文切换单核处理器也支持多线程执行代码,CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。在切换之前会保存上一个任务的状态,以便之后切换回这个任务继续执行。1.多线程一定快吗不一定,因为线程有创建和上下文切换的开销。CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任.原创 2021-12-19 09:08:45 · 256 阅读 · 34 评论 -
《剑指Offer》Java版全系列笔记+刷题顺序(最新版,已完结~~)
本系列记录了剑指Offer每日刷题笔记(包含解题思路),顺序也是按照由易到难进行的。书山有路勤为径。希望和大家共同进步! 2021/10/15每天一更(2~3题),多多关注呀!第 1 天 栈与队列(简单)剑指 Offer 09. 用两个栈实现队列剑指 Offer 30. 包含min函数的栈...原创 2021-10-15 17:29:19 · 1942 阅读 · 29 评论 -
英语老师问我String、StringBuffer和StringBuilder三个单词的区别(也有我豪横的时候了??)
今天是六一,谁还不是个孩子呢(那为什么没有mm送糖果吃呢)好了话不多说,如果面试官(新任英语老师)问String、StringBuffer和StringBuilder这三者的区别我们该怎么说呢?好了话不多说(梅开二度),首先我跟据这个问题总结出来了三要素,由浅到深,如下↓答:String是不可变的字符序列,他是用final来修饰的,也就是说它的值一旦创建就不能被修改,每次操作都会产生新的对象。StringBuffer是可变的字符序列,JDK1.0中声明,可以对字符串内容进行增删,此时不会产生新原创 2021-06-01 12:43:37 · 299 阅读 · 4 评论 -
字符串string的存储过程(简单易懂)
目录一、String的存储过程二、让这道题来康康你理解的怎么样了?一、String的存储过程为了大家更好的了解string的存储过程,我们暂时将字符串常量池归到方法区。如果想仔细了解JDK的运行时常量池、字符串常量池、静态常量池的功能及存储位置,我也在后面给大家推荐了一个清晰明了的文章。首先我们以最简单的为例,如下: String a="helloWorld"; String b= new String("helloWorld"); System.out.prin原创 2021-05-30 23:17:43 · 712 阅读 · 0 评论 -
超详细的Java多线程知识点
1.为什么要使用多线程程序的运行速度可能加快在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等2.创建多线程的方式这里以线程a和线程b共同打印1-100为例继承Thread类public class Way1 extends Thread{ private static int number=1; @Override public void run() { whil原创 2021-05-29 10:30:36 · 226 阅读 · 0 评论