05 2021 档案

摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现 阅读全文
posted @ 2021-05-29 22:37 一名不断学习的程序猿 阅读(410) 评论(0) 推荐(0)
摘要:fail-fast机制 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加、删除),则会抛出ConcurrentModificationException,请注意修改集合的内容不是修改集合的结构。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个modCo 阅读全文
posted @ 2021-05-21 20:59 一名不断学习的程序猿 阅读(115) 评论(0) 推荐(0)
摘要:Java内存模型JMM JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。 JMM 体现在以下几个方面 😦1)原子性 - 保证指令不会受到线程上下文切换的影响;(2)可见性 - 保证指令不会受 cpu 阅读全文
posted @ 2021-05-19 22:21 一名不断学习的程序猿 阅读(587) 评论(0) 推荐(0)
摘要:import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class MapOperation { private static Map<String, String> map = new Ha 阅读全文
posted @ 2021-05-18 19:55 一名不断学习的程序猿 阅读(69) 评论(0) 推荐(0)
摘要:基本概念 乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。 乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。 悲观锁:悲观锁在操作数据时比较悲观,认为别人 阅读全文
posted @ 2021-05-17 21:38 一名不断学习的程序猿 阅读(657) 评论(0) 推荐(1)
摘要:public class Test { public static void main(String[] args) throws InterruptedException { TwoPhaseTermination tpt = new TwoPhaseTermination(); tpt.star 阅读全文
posted @ 2021-05-16 19:44 一名不断学习的程序猿 阅读(64) 评论(0) 推荐(0)
摘要:一类是每个线程所独享的: 1)PC Register:也称为程序计数器, 记录每个线程当前执行的指令信。eg:当前执行到哪一条指令,下一条该取哪条指令。 2)JVM Stack:也称为虚拟机栈,记录每个栈帧(Frame)中的局部变量、方法返回地址等。 3)Native Method Stack:本地 阅读全文
posted @ 2021-05-15 20:31 一名不断学习的程序猿 阅读(115) 评论(0) 推荐(0)
摘要:JVM 主要由四大部分组成:ClassLoader(类加载器),Runtime Data Area(运行时数据区,内存分区),Execution Engine(执行引擎),Native Interface(本地库接口),下图可以大致描述 JVM 的结构。 阅读全文
posted @ 2021-05-10 19:58 一名不断学习的程序猿 阅读(109) 评论(0) 推荐(0)
摘要:==直接比价java的8个基本数据类型是可以比价出值是否相同的,但其左右操作数如果是对象的话,那么比较的是引用的地址,不能比较出值是否相同。 Integer是对小数据(-128~127)是有缓存的,jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,这样,如果初始化-128~1 阅读全文
posted @ 2021-05-09 20:22 一名不断学习的程序猿 阅读(263) 评论(0) 推荐(0)
摘要:ArrayList和Vector底层是数组结构实现,LinkedList是双向链表, ArrayList和Vector查询快,删除慢,LinkedList与之相反, ArrayList是线程不安全的,性能优于Vector,Vecotr容器现在不建议大家使用 Vector是线程安全的,能解决线程安全问 阅读全文
posted @ 2021-05-08 20:55 一名不断学习的程序猿 阅读(86) 评论(0) 推荐(0)
摘要:StringBuffer、StringBuilder和String一样,也用来代表字符串。 String类是不可变类,任何对String的改变都 会引发新的String对象的生成; StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象; StringBuilder也是可 阅读全文
posted @ 2021-05-07 19:53 一名不断学习的程序猿 阅读(1317) 评论(0) 推荐(0)
摘要:程序代码: class TPTInterrupt { private Thread thread; public void start() { thread = new Thread(() -> { while (true) { Thread current = Thread.currentThre 阅读全文
posted @ 2021-05-05 14:40 一名不断学习的程序猿 阅读(100) 评论(0) 推荐(0)
摘要:线程的创建: 方法1: Thread thread=new Thread(()->{System.out.println("这是第一个线程");});thread.setName("threadOne");thread.start(); 方法2: Runnable runnable=()->{Sys 阅读全文
posted @ 2021-05-03 15:05 一名不断学习的程序猿 阅读(48) 评论(0) 推荐(0)