摘要: 所谓后台(daemon)线程,是指在程序运行的时候在后台提供一种通用服务的线 程,并且这个线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程 结束时,程序也就终止了,同时会杀死进程中的所有后台线程。反过来说, 只要有任何非后台线程还在运行,程序就不会终止。必须在线程启动之前调用 setDae 阅读全文
posted @ 2020-10-11 20:54 咔啡 阅读(419) 评论(0) 推荐(0)
摘要: zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写 插件;但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式。 阅读全文
posted @ 2020-10-11 14:11 咔啡 阅读(545) 评论(0) 推荐(0)
摘要: 举例来说明锁的可重入性 public class UnReentrant{ Lock lock = new Lock(); public void outer(){ lock.lock(); inner(); lock.unlock(); } public void inner(){ lock.lo 阅读全文
posted @ 2020-10-11 13:44 咔啡 阅读(808) 评论(0) 推荐(0)
摘要: 相对于XML文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。 开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系。 阅读全文
posted @ 2020-10-11 12:49 咔啡 阅读(123) 评论(0) 推荐(0)
摘要: 如果异常没有被捕获该线程将会停止执行。Thread.UncaughtExceptionHandler 是用于处理未捕获异常造成线程突然中断情况的一个内嵌接口。当一个未捕获异 常将造成线程中断的时候 JVM 会使用 Thread.getUncaughtExceptionHandler() 来查询线程的 阅读全文
posted @ 2020-10-11 12:44 咔啡 阅读(245) 评论(0) 推荐(0)
摘要: 在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但 随之出现很多问题,比较典型的还是死锁问题。 解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方 法实现线程阻塞。 首先,wait、notify 方法是针对 阅读全文
posted @ 2020-10-11 12:34 咔啡 阅读(334) 评论(0) 推荐(0)
摘要: 一个很明显的原因是 JAVA 提供的锁是对象级的而不是线程级的,每个对象都有 锁,通过线程获得。由于 wait,notify 和 notifyAll 都是锁级别的操作,所以把他 们定义在 Object 类中因为锁属于对象。 阅读全文
posted @ 2020-10-11 12:14 咔啡 阅读(276) 评论(0) 推荐(0)
摘要: notify() 方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有 用武之地。而 notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程 能继续运行。 阅读全文
posted @ 2020-10-11 12:09 咔啡 阅读(127) 评论(0) 推荐(0)
摘要: 在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试 Spring MVC 应用程序。在上面显示的快照中,我们只想启动 ToTestController。 执行此单元测试时,不会启动所有其他控制器和映射。 阅读全文
posted @ 2020-10-11 11:58 咔啡 阅读(545) 评论(0) 推荐(0)
摘要: 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口,需要实现的是 call() 方法 阅读全文
posted @ 2020-10-11 11:57 咔啡 阅读(122) 评论(0) 推荐(0)