![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
文章平均质量分 93
仲翎逸仙
身常行慈,口常行慈,意常行慈
展开
-
Socket 服务端使用多线程实现多客户端通讯实例
socket通信原理 Java多线程实现Socket通讯 1、服务端import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** * <p> * 基于socket通讯-服务端 * <p> * * @author <a href="mailt...转载 2018-05-17 10:41:56 · 334 阅读 · 0 评论 -
读写锁和两种同步方式的对比
读写锁ReentrantReadWriteLock概述大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有 完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低。所以在JDK中提供了一种读写锁 ReentrantReadWriteLock,使用它可以加快运行效率。读写锁表示两个锁,一个是读操作相关的锁,称为共享锁;另一个是写操作相关的锁,称...原创 2018-05-16 20:03:05 · 150 阅读 · 0 评论 -
多线程操作中为什么使用while而不是if来做判断状态是否就绪
假设有三个线程ABC,A为生产者线程,B为消费者线程,C为破坏者线程。三个线程都进入一个共享对象的方法(当然不是同时进入),C进入的时候,通过调用 notifyAll的方法,把所有的wait唤醒,如果用了if,代码会往下进行,会导致无法获取到元素或者删除元素。如果是while就不一样了,就会继续检查条件。1.容器类EventStoage.javapackage sss; import java....原创 2018-05-24 23:34:00 · 2282 阅读 · 2 评论 -
Java多线程之ReentrantLock与Condition
一、ReentrantLock 1、ReentrantLock简介 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的性能。(换句话说,当许多线程都想访问共享资源时,JVM ...转载 2019-03-09 17:23:02 · 198 阅读 · 0 评论 -
Java并发编程:线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我们就来...转载 2019-03-09 21:13:41 · 167 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁详解
一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA的并发包提供了读写锁ReentrantReadWriteLock,它表示两个锁,一个是读操作相关的锁,称...转载 2019-03-09 22:28:06 · 137 阅读 · 0 评论 -
深入剖析ThreadLocal
一、对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。这句话从字面上看起来很容易理解,但是真正理解并不是那么容易。 ThreadLocal的官方API解释为: “该类提供了线程局部 (thread-local...转载 2019-03-10 15:05:18 · 148 阅读 · 0 评论