
java基础
仅此,
这个作者很懒,什么都没留下…
展开
-
自旋锁与自适应自旋优化
我们知道,无论是 synchronized 还是 lock 锁,它们都有一个同步监视器,也就是锁。当一个线程 进入临界区,访问共享变量,就要获取这个锁;其它线程也要访问这个共享变量,发现锁被占用了,这时有两种操作方式:将自己挂起,等锁释放后再恢复,但这会给 jvm 的并发带来很大压力,对共享变量的访问往往不需要很长时间,没必要为了这点时间就去挂起和恢复线程如果你的 cpu 是多核的,支持多个线程并行,当一个线程获取锁,另一个线程并不释放 cpu,而是执行一个忙循环,一直等待锁被释放,这就是原创 2021-09-12 17:21:50 · 311 阅读 · 0 评论 -
StringUtils.isEmpty() 过期了,用什么替换?
@Test public void test01(){ String s1 = null; // null对象 String s2 = ""; // 空串 String s3 = " "; // 带空格 System.out.println("s1:"+ StringUtils.hasText(s1)); System.out.println("s2:"+ StringUtils.hasText(s2));原创 2021-06-25 19:14:31 · 13445 阅读 · 2 评论 -
Java多线程--- condition原理,为什么Condition可以精确唤醒指定的线程类型
Java中,关于如何精确唤醒你想指定的线程,大家都会做,不就是使用显式的lock和condition吗。那为什么 condition 可以唤醒指定的线程?我们以 “ 生产者和消费 ” 为例:定义一个全局的有界缓存集合 buffer[20] ;定义一个 put() 方法,当 isFull() == true 时,线程阻塞,否则 buffer.add();定义一个take() 方法,当 isEmpty == ture 时,线程阻塞,否则 buffer.先搞清楚几个概念:条件谓词 : 线程阻原创 2021-05-01 00:03:32 · 983 阅读 · 3 评论 -
java查询数据库,int型字段为null的情况
Java代码中,查询数据库,int型字段为null 时:比如 int age; 查询数据库的age 为null,数据库中age为int型,那么age = resultSet.getInt("age") ;就会出问题,解决办法有两个: 1,把age指定为Integer 即int的包装类; 2,select name, IFNULL(age,0) fromtable; // 查询姓名和年龄,年龄为空则置为0。 如果你表的字段有好几个的话,就不能用 * 号代替所有的字段了。IFNUL原创 2020-12-16 01:56:14 · 3307 阅读 · 0 评论