并发编程
文章平均质量分 82
样young
没有什么可介绍的,希望能够在这里学到更多的知识
展开
-
Java线程池种类及关键参数
在Java编码的过程中,我们经常会创建一个线程来提高程序的执行效率,虽然这样实现起来很方便,但是会有一个问题:如果并发的线程数多,并且每个线程都是执行一个时间很短的任务就结束了,这样会造成频繁的创建和销毁线程从而导致降低系统的效率。那么问题来了,有没有办法可用复用创建好的线程呢,也就是线程执行完一个任务后,不被销毁,继续执行其他的任务?在Java可以通过线程池来实现这样的效果。下面从三个方面和大家一起来探讨一下Java线程池相关的内容:Java中的ThreadPoolExecutor类 Java中转载 2021-09-01 20:50:02 · 1117 阅读 · 0 评论 -
juc包下四大并发工具
1.juc.CountDownLatch 闭锁一个线程在等待一组线程后再恢复执行await()等待其他线程执行完毕被等待线程执行完毕后计数器-1如何知道其他线程执行完了?计数器,若一组线程为,CountDown为5,减到0代表等待线程被全部执行完毕一次性工具:当Countdown的值减到0的时候再也无法恢复juc内部的代码都是lock体系来实现的import java.util.concurrent.CountDownLatch;import java.util.conc转载 2021-08-31 23:38:40 · 308 阅读 · 0 评论 -
Java原子类及内部原理
一、引入 原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作是原子操作。再比如:a++;这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。 但是,像i++这种非原子操作,我们除了使用synchroinzed关键字实现同步外,还可以使用java.util.concurre...转载 2021-08-31 23:22:15 · 197 阅读 · 0 评论 -
Java:多线程中的volatile
一、为什么使用volatile首先,通过一段简单的代码来理解为什么要使用volatile: 1 public class RunThread extends Thread{ 2 private boolean isRunning = true; 3 public boolean isRunning(){ 4 return isRunning; 5 } 6 7 public void setRunning(boolean isRunnin转载 2021-03-01 11:36:22 · 224 阅读 · 0 评论 -
Java并发编程之基于线程池技术的简单Web服务器
目前大多浏览器都支持多线程访问,但是如果Web服务器是单线程的话,多线程的浏览器也无用武之地,因为服务端只能一个请求一个请求的顺序处理。因此,Web服务器很有必要支持并发访问。下面通过使用线程池构造一个简单的Web服务器,这个服务器可以处理HTTP请求,并处理简单的文本和jpg格式图片内容。当客户端不断请求Socket连接,Web服务器将该连接以及请求提交线程池处理,使得Web服务器能...原创 2018-06-02 15:44:41 · 1715 阅读 · 0 评论