死磕java
文章平均质量分 64
java有很多小把戏,让我们感觉他们无所不能,让我们死磕java,走进java解析其中秘密。
技匠而已
在这一片天地,留下一点足迹。
展开
-
java后端对Cookie进行操作
java后端对Cookie进行操作原创 2022-06-11 23:48:38 · 5124 阅读 · 0 评论 -
BlockingQueue使用详解以及测试代码
BlockingQueue另一个Queue,它支持在检索元素时等待队列变为非空,以及在存储元素时等待队列中的空间变为可用的操作。BlockingQueue方法有四种形式,有不同的处理操作的方式,这些操作不能立即被满足,但可能在将来的某个时候被满足:第一个 抛出一个异常,第二个 返回一个特殊值(根据操作的不同,可以是null或false)第三个 无限期地阻塞当前线程,直到操作成功第四个 在放弃之前只阻塞给定的最大时间限制。这些方法总结如下表:BlockingQueu原创 2022-02-19 14:58:32 · 920 阅读 · 0 评论 -
lock.ReadWriteLock使用方法
Lock锁锁实现提供了比使用synchronized方法和语句更广泛的锁操作。它们允许更灵活的结构,可能有不同的属性,可能支持多个关联的Condition对象。锁是用于控制多个线程对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只有一个线程可以获得锁,并且所有访问共享资源的访问都需要先获得锁。但是,有些锁可能允许并发访问共享资源。例如readwritellock的读锁。同步方法或语句的使用提供了对每个对象关联的隐式监视器锁的访问,但强制所有锁的获取和释放都以块结构的方式进行:当多个锁原创 2022-02-19 14:33:19 · 477 阅读 · 0 评论 -
多线程任务执行后发送通知,CyclicBarrier使用
多线程任务执行后发送通知,CyclicBarrier使用一种同步辅助,允许一组线程互相等待到达一个共同的障碍点。CyclicBarriers在涉及固定大小的线程群的程序中很有用,这些线程群必须偶尔相互等待。这个屏障被称为循环的,因为它可以在等待的线程被释放后被重用。CyclicBarrier支持一个可选的Runnable命令,该命令在每个barrier点上运行一次,在队列中的最后一个线程到达之后,但在任何线程被释放之前。这个barrier动作对于在任何一方继续之前更新共享状态非常有用。import原创 2022-02-18 18:36:13 · 479 阅读 · 0 评论 -
多线程同步执行,CountDownLatch使用
多线程同步执行,CountDownLatch使用一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。CountDownLatch用给定的计数进行初始化。由于对countDown方法的调用,await方法会阻塞直到当前计数达到0,之后所有等待的线程都会被释放,所有后续的await调用都会立即返回。这是一个一次性现象——计数不能重置。如果需要重置计数的版本,可以考虑使用CyclicBarrier。CountDownLatch是一个通用的同步工具,可以用于多种目的。用一个计数初始化的原创 2022-02-18 18:31:04 · 1060 阅读 · 0 评论 -
并发情况下使用List,多线程操作List,CopyOnWriteArrayList的使用
多线程操作List并发下 arrayList 是不安全的并发请求下使用ArrayList会造成数据的丢失,甚至是报错解决方案使用vector解决List arrayList = Collections.synchronizedList(new ArrayList<>());List arrayList = new CopyOnWriteArrayList<>();import org.apache.commons.lang.RandomStringUtils;原创 2022-02-18 18:14:01 · 2347 阅读 · 0 评论 -
lock.tryLock()使用与synchronized比较
Lock锁锁实现提供了比使用synchronized方法和语句更广泛的锁操作。它们允许更灵活的结构,可能有不同的属性,可能支持多个关联的Condition对象。锁是用于控制多个线程对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只有一个线程可以获得锁,并且所有访问共享资源的访问都需要先获得锁。但是,有些锁可能允许并发访问共享资源。例如readwritellock的读锁。同步方法或语句的使用提供了对每个对象关联的隐式监视器锁的访问,但强制所有锁的获取和释放都以块结构的方式进行:当多个锁原创 2022-02-18 17:45:26 · 539 阅读 · 0 评论 -
lock.lock()使用,与synchronized对比
Lock锁锁实现提供了比使用synchronized方法和语句更广泛的锁操作。它们允许更灵活的结构,可能有不同的属性,可能支持多个关联的Condition对象。锁是用于控制多个线程对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只有一个线程可以获得锁,并且所有访问共享资源的访问都需要先获得锁。但是,有些锁可能允许并发访问共享资源。例如readwritellock的读锁。同步方法或语句的使用提供了对每个对象关联的隐式监视器锁的访问,但强制所有锁的获取和释放都以块结构的方式进行:当多个锁原创 2022-02-18 17:19:51 · 3250 阅读 · 0 评论 -
Semaphore使用,占桌把戏
Semaphore使用,占桌把戏计数信号量。从概念上讲,一个信号量维护一组许可。如果有必要,每个人都需要获得区块,直到获得许可证,然后获得许可证。每次发布都会增加一个许可,可能会释放一个阻塞的收购方。然而,没有使用实际的许可对象;信号量只是保持一个可用数字的计数,并采取相应的行动。信号量通常用于限制线程的数量,而不能访问某些(物理或逻辑)资源。例如,下面是一个类,它使用信号量来控制对一个占桌public static void main(String[] args) throws Interru原创 2022-02-18 16:52:15 · 198 阅读 · 0 评论