随笔分类 -  Java

摘要:Guava 工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如: 集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annot 阅读全文
posted @ 2020-05-05 16:48 MoonGeek 阅读(17395) 评论(0) 推荐(5)
摘要:0、概述 ThreadLocal,即线程本地变量。它是将变量绑定到特定的线程上的“入口“,使每个线程都拥有改变量的一个拷贝,各线程相同变量间互不影响,是实现共享资源的轻量级同步。 下面是个ThreadLocal使用的实例,两个任务共享同一个变量,并且两个任务都把该变量设置为了线程私有变量,这样,虽然 阅读全文
posted @ 2017-11-20 15:38 MoonGeek 阅读(752) 评论(0) 推荐(0)
摘要:0、概述 synchronized是Java提供的内置的锁机制,来实现代对码块的同步访问,称为内置锁(Intrinsic Lock) 。内置锁包括两部分:一个是作为锁的对象的引用,另一个是由这个锁保护的代码块。需要理解的是,synchronized的锁都是对象的引用,同一个对象只有一个内置锁,不同的 阅读全文
posted @ 2017-11-19 09:53 MoonGeek 阅读(472) 评论(0) 推荐(1)
摘要:任务和线程的启动很容易。在大多数情况下我们都会让他们运行直到结束,或是让他们自行停止。但是,有时我们希望提前结束任务或是线程,可能是因为用户请求取消,或是线程在规定时间内没有结束,或是出现了一些问题迫使线程要提前结束。 强制一个线程或是服务立即停止,可能会造成共享数据状态不一致的问题,比如,两个线程 阅读全文
posted @ 2017-11-18 20:22 MoonGeek 阅读(2259) 评论(2) 推荐(0)
摘要:synchronized 是内置锁,而Lock 接口定义的是显示锁,Lock 提供了一种可重入的、可轮询的、定时的以及可中断的锁获取操作。 ReenTranLock实现了Lock接口,并提供了与synchronized 相同的互斥性和内存可见性。在获取ReentranLock时,有着与进入同步代码块 阅读全文
posted @ 2017-11-18 20:13 MoonGeek 阅读(3124) 评论(3) 推荐(1)
摘要:0、使用线程池的必要性 在生产环境中,如果为每个任务分配一个线程,会造成许多问题: 线程生命周期的开销非常高。线程的创建和销毁都要付出代价。比如,线程的创建需要时间,延迟处理请求。如果请求的到达率非常高并且请求的处理过程都是轻量级的,那么为每个请求创建线程会消耗大量计算机资源。 资源消耗。 活跃的线 阅读全文
posted @ 2017-11-14 15:38 MoonGeek 阅读(1081) 评论(0) 推荐(0)
摘要:1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。 2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/noti 阅读全文
posted @ 2017-10-06 13:33 MoonGeek 阅读(180565) 评论(16) 推荐(29)
摘要:1、Comparable 介绍 Comparable 是一个排序接口,如果一个类实现了该接口,说明该类本身是可以进行排序的。注意,除了基本数据类型(八大基本数据类型) 的数组或是List,其余类型的对象,Collections.sort或Arrays.sort 是不支持直接进行排序的,因为对象本身是 阅读全文
posted @ 2017-10-02 12:33 MoonGeek 阅读(754) 评论(0) 推荐(0)
摘要:中断线程 在 run() 方法中,如果语句执行到了最会一句,或是遇到 return 方法,或是方法中出现了没有被捕获的异常,run() 方法将会执行结束。在java中,Thread中的interrupt() 方法被调用时,线程中断状态将被置位,由于线程在运行期间,会不断的检测这个状态位,以判断程序是 阅读全文
posted @ 2017-09-29 14:08 MoonGeek 阅读(3414) 评论(0) 推荐(4)