记录某时疑问与读文章的解答

背景

学习java过程中,偶有一些由此及彼或针对于此想深入探究的疑问,搜索几篇好文章读后有所释疑。

问题与解答

java日志框架

java日志框架很多,它们之间的关系、怎么选择使用哪个却不清楚,读了参考文章,有所收获。推荐的是slf4j+logback的组合。slf4j和jcl是外观接口,底层实现有jul、log4j、logback、log4j2。不同的日志框架如何相互转化可参考如下文章。

参考文献
https://blog.csdn.net/weixin_40912883/article/details/88711495(终于搞懂了Java 日志系统依赖)
https://zhuanlan.zhihu.com/p/24272450(Java 日志框架解析(上) - 历史演进)
https://zhuanlan.zhihu.com/p/24275518(Java 日志框架解析(下) - 最佳实践)
https://blog.csdn.net/m2606707610/article/details/102968962(SpringBoot底层日志依赖关系及日志框架的讲解和使用)

java中如何中断

补获中断异常是很常见的用法,但如何触发中断呢?如下文章讲的很好。正在运行的线程是无法中断的,只有wait、join、sleep的线程可以被中断。对线程发出中断是调用thread.interrupt(),这是一个实例方法。但中断发出后并不意味着该线程一定会中断,取决于线程中是否对中断状态进行了判断。
要想中断起作用,用三种方式:信号量(即标志位,主线程通过置位标志位,子线程通过对标志位的判断决定是否继续循环)、抛出异常法(主线程通过调用实例方法thread.interrupt(),子线程通过try catch InterruptedException来补捉)、Thread.interrupted监听(主线程通过调用实例方法thread.interrupt(),子线程通过调用Thread.interrupted作为循环是否进行的标志)。
静态方法Thread.interrupted发现中断状态为true时,会将标志位恢复为未中断状态。实例方法thread.isInterrupted不影响中断状态标志位。这两个的区别需要注意一下。

参考文献:
https://www.cnblogs.com/moongeek/p/7610784.html

java.lang.Void是干啥的

背景:跟踪EnableConfigurationPropertiesRegistrar源码发现filter((type) -> {
return Void.TYPE != type;
}),不清楚这个类的作用。
看参考文章,似乎就是一个表示null的类型占位符。在返回为空时可以用它来占位泛型,函数返回值为Void表示函数只能返回null。似乎Void类型是为函数式编程及泛型而生。

参考文献:
https://www.jb51.net/article/131118.htm

Object.getClass返回的是子类还是父类

javadoc说返回的是runtime class,意思是如果将子类实例赋值给父类变量,调用getClass返回的是子类类型。

org.springframework.boot.context.TypeExcludeFilter的match方法中比较getClass() == TypeExcludeFilter.class,估计是不想被子类使用这一块逻辑。
参考文献:
https://stackoverflow.com/questions/40486720/what-is-a-runtime-class-in-java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值