![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java核心知识
文章平均质量分 78
注意负对数
这个作者很懒,什么都没留下…
展开
-
Java多线程并发4: 锁
锁 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写操作。 java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。 悲观锁 悲观锁就是悲观思想,即认为读少写多,遇到并发写的可能性高,每次去拿数据的时候原创 2021-03-24 15:09:26 · 138 阅读 · 0 评论 -
JVM类加载机制
Java类加载机制 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这个过程。 加载 加载是类加载过程的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从zip包中读取(比如jar包和war包),也可以在运行时计算机生成的(动态代理),也可以由其它文件生成(比如将JSP文件转换成对应的Class类)。 验证 这一阶段的主要目的是为了确保Class原创 2021-03-24 11:48:16 · 73 阅读 · 1 评论 -
Java多线程并发3: 线程生命周期
线程生命周期(状态) 当线程被创建并启动后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直“霸占”着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行,阻塞之间切换。 新建状态(New) 当程序使用new关键字创建一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的原创 2021-03-24 10:06:35 · 96 阅读 · 0 评论 -
Java多线程并发2: 4种线程池
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。 newCachedThreadPool 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步的程序而言,这些线程池通常可提高程序性能。 调用execute将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有60秒未被使用的线原创 2021-03-23 20:14:32 · 75 阅读 · 0 评论 -
Java多线程并发1: 并发知识库、线程创建方式
Java并发知识库 Java线程实现/创建方式 继承Thread类 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()是一个native方法,它将启动一个新线程,并执行run()方法。 public class MyThread extends Thread{ public void run(){ System.out.println("MyThread is running"); } }原创 2021-03-23 19:32:31 · 58 阅读 · 0 评论