JAVA
未知~
这个作者很懒,什么都没留下…
展开
-
Daemon线程(守护线程)
知识点总结: 线程分为用户线程与守护线程; 虚拟机在没有用户线程下会退出; 守护线程不一定执行完完整内容,这取决于用户线程的存在与否; 设置守护线程,一定要在线程启动start之前进行设置;不能在启动之后设置; Java普通运行是两个线程,一个主线程,一个GC线程;GC线程是守护线程; 《java并发编程的艺术》中提到,daemon线程是一种支持型的线程,主要用于程序的后台调度以及支持性工作,意味着在没有非Daemon线程的情况下,Java虚拟机将会退出。通过使用Thread.setDaemon(tru原创 2021-07-03 10:22:28 · 958 阅读 · 0 评论 -
IDEA插件安装推荐
感觉IDEA在添加一些插件之后,使用起来真的非常不一样,也可以提高效率; Alibaba Java Coding Guidelines 阿里巴巴开发规范,平时可以提醒开发者命名规范,代码规范,使用起来还是特别可以的,毕竟符合规范的代码风格有利于团队合作,也更加赏心悦目; Background Iamge Plus 可以对于IDEA的背景进行设置,毕竟个人觉得设置一个自己喜欢的背景,会更加有动力,真的不是特别喜欢全黑的感觉; 可以到IDEA插件官网直接查找下载,然后安装好之后重启; 如果在view下原创 2021-04-03 13:18:55 · 129 阅读 · 0 评论 -
Java中的并发工具类
Java中的并发工具类 1. CountDownLatch join用于让当前执行线程等待join线程执行结束。实现原理是不停检查join线程是否存活,如果存活则让当前线程永远等待;线程中止后,线程notifyAll()会被调用(JVM)中实现; public static void main(String[] args) throws InterruptedException { final int n = 6; //计数为6 CountDownLat原创 2021-03-12 10:23:00 · 107 阅读 · 0 评论 -
Integer对象缓存机制
不止是Integer,Long,Float等都存在对象缓存机制,比如Integer的缓存值在于-128——127,如果使用自动装箱,则在这个范围内的对象引用是相等; 但如果是new出来的,因为是新开创空间,即使是在这个范围内,也是不相等的; 测试如下: Integer a = 500; Integer b = 500; Integer c = 127; Integer d = 127; Integer e = new Integer(127)原创 2021-03-05 17:08:58 · 473 阅读 · 0 评论 -
CAS与AtomicInteger自增操作
CAS:compareAndSet,对比然后赋值; AtomicInteger中的: /** *this:操作对象 *valueOffset:对象值偏移地址 *expect:预期值 *update:更新的值 */ public final boolean compareAndSet(int expect, int update) { return unsafe.compareAndSwapInt(this, valueOffset, exp原创 2021-03-05 16:25:17 · 1049 阅读 · 0 评论 -
利用反射机制修改构造器的权限
通过反射,可以获取并修改构造器的权限; 定义一个懒汉模式; //懒汉模式 class LazyMan{ private volatile static LazyMan instance = null; private LazyMan(){ } public static LazyMan getInstance(){ if(instance == null){ synchronized(LazyMan.class){原创 2021-03-04 21:37:03 · 222 阅读 · 1 评论 -
map的遍历
有时候经常用到map的KV对,但是在遍历的时候经常忘记如何去实现,所以做一个笔记,留作后面的回顾; public static void main(String[] args) { String msg = "can you can a can as a can canner can a can."; Map<Character, Integer> str = new HashMap<Character, Integer>(); f原创 2021-02-15 21:25:13 · 90 阅读 · 0 评论