并发编程,目前软件开发不可规避的一个问题,在此我先和大家分享下如何使用java 提供的并发工具类,至于内部源码原理研究还需要大家自己好好学习了,且下面的示例也是借鉴了别人文章,个人感觉蛮好。
1、Semaphore(信号量) ,主要做一些阀值的控制
public class SemaphoreTest { /** * 适合做一些资源控制,下面的示例演示了在高并发来获取资源执行任务时,最多值允许 * 10个线程来执行任务,所以适合在数据库连接池等场景使用,避免资源过度消耗 */ private final static Semaphore permits = new Semaphore(10); public static void main(String[] args) { try { for (int i = 0 ; i < 100 ;i++) { new Thread(){ public void run(){ try { permits.acquire(); System.out.println("获取了许可,执行任务!"); } catch (InterruptedException e) { e.printStackTrace(); }finally{ //归还了许可证 permits.release(); } } }.start(); } } catch (Exception e) { e.printStackTrace(); } } }
2、Exchanger(交换器)
public class ExchangerTest { public static void main(String []args) { final Exchanger <Integer>exchanger = new Exchanger<Integer>(); for(int i = 0 ; i < 10 ; i++) { final Integer num = i; new Thread() { public void run() { System.out.println("我是线程:Thread_" + this.getName() + "我的数据是:" + num); try { Integer exchangeNum = exchanger.exchange(num); Thread.sleep(1000); System.out.println("我是线程:Thread_" + this.getName() + "我原先的数据为:" + num + " , 交换后的数据为:" + exchangeNum); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); } } }
代码说明:
可以看到,如果某个线程和另一个线程传送了数据,它接受到的数据必然是另一个线程传递给他的,中间步 骤由Exchanger去控制,其实你可以说,我自己随机取选择,不过中间的算法逻辑就要复杂一些了
下面还有几种工具类需要介绍,稍后会完善过来。
相关推荐
Java 并发工具类详解 Java 并发工具类是 Java 并发编程中的一种重要工具,用于协调线程之间的并发执行。 Java 并发工具类中有很多种,今天我们主要介绍四种:CyclicBarrier、CountDownLatch、Semaphore 和 ...
Java并发工具类是Java平台提供的一系列用于处理多线程并发问题的类和接口,它们在`java.util.concurrent`包中。并发问题主要包括资源竞争、死锁、活锁以及饥饿等,合理使用并发工具可以有效地提高程序的并发性能并...
06、JUC并发工具类在大厂的应用场景详解_ev06、JUC并发工具类在大厂的应用场景详解_ev06、JUC并发工具类在大厂的应用场景详解_ev06、JUC并发工具类在大厂的应用场景详解_ev06、JUC并发工具类在大厂的应用场景详解_ev...
### 并发编程——并发工具类 #### 知识点概述 并发编程是Java编程中的高级主题,主要目的是为了让程序能够充分利用多核CPU的优势,提高程序的执行效率。并发工具类则是Java中用于支持多线程协作和同步控制的一系列...
"Java 并发工具类详解" Java 并发工具类是 Java 并发编程的核心组件之一,提供了多种同步结构和并发容器,帮助开发者创建高效、可靠的并发程序。本文将详细介绍 Java 并发工具类的四大类:CountDownLatch、...
Java并发工具类是Java多线程编程中必不可少的一部分,它们为开发者提供了更加高效和灵活的线程同步机制。本文将详细介绍三个重要的并发工具类:CountDownLatch、CyclicBarrier和Semaphore。 首先,CountDownLatch是...
并发工具类介绍_2
并发工具类介绍_3
并发工具类介绍_4
并发工具类介绍_5
并发工具类介绍_6
并发工具类介绍_7
并发工具类介绍_8
高并发订单号生成工具类,TWITTER编码方式可BAIDU
九、并发工具类 包括 TimeUnit、ThreadLocalRandom 和 Phaser 等,这些工具类提供了在并发编程中常用的实用功能,如时间单位转换、随机数生成和同步阶段控制。 总结来说,Java并发工具包提供了丰富的工具和机制,...
并发工具类介绍_(1)
本文将详细解析Java并发工具类,并通过示例代码介绍`CountDownLatch`、`CyclicBarrier`、`Phaser`、`Semaphore`和`ThreadLocal`的用法。 1. **CountDownLatch** `CountDownLatch`是一个计数器,通常用于等待多个...
Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...
### JUC并发工具类在大型企业的应用场景详解 #### 一、引言 随着现代软件系统对高并发处理能力的需求日益增长,如何有效地管理和控制多线程间的协作与竞争成为了一个重要课题。Java语言自1.5版本引入了`java.util....
【并发工具类及线程池】是Java多线程编程中的重要组成部分,它们提供了一种高效、可控的方式来管理和协调并发任务。本节主要讨论的是CyclicBarrier,一个用于同步线程的工具类。 **CyclicBarrier简介** ...