我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中异步处理机制的应用场景有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中异步处理机制的应用场景有哪些

Java中异步处理机制的应用场景有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

       通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而异步则意味着某个处理过程可以允许多个线程同时处理。下面我们就来看看有关异步处理的详细内容。

       异步通常代表着更好的性能,因为它很大程度上依赖于缓冲,是典型的使用空间换时间的做法,例如在计算机当中,高速缓存作为cpu和磁盘io之间的缓冲地带协调cpu高速计算能力和磁盘的低速读写能力。

volatile

       应用场景:检查一个应用执行关闭或中断状态。因为此关键字拒绝了虚拟对一个变量多次赋值时的优化从而保证了虚拟机一定会检查被该关键字修饰的变量的状态变化。

CountDownLatch

       应用场景:控制在一组线程操作执行完成之前当前线程一直处于等待。例如在主线程中执行await()方法阻塞主线程,在工作线程执行完逻辑后执行countDown()方法。

本文示例场景:

       1,从控制台发送消息到消息服务器(由一个队列模拟)。

       2,将消息队列写入到文件(对写文件的操作设置延时以模拟性能瓶颈)。

       3,消息服务器作为控制台和文件写入之间的缓冲区。

示例代码:

      注:往消息队列添加消息可以通过for循环一次性加入,本文为了便于观察文件和队列的变化而采用了控制台输入,实际写一行文件记录速度应该高于手速,所以本文示例中增加了线程sleep时间。

package org.wit.ff.ch3;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner;import java.util.concurrent.BlockingQueue;import java.util.concurrent.CountDownLatch;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.TimeUnit;public class AsyncHandler {  private CountDownLatch latch;  private volatile boolean handleFinish;  private volatile boolean sendFinish;  private BlockingQueue<String> queue; private BufferedWriter bw; public AsyncHandler(CountDownLatch latch) {  this.latch = latch;    queue = new LinkedBlockingQueue<String>();  File file = new File("E:/hello.txt");  try {   bw = new BufferedWriter(new FileWriter(file));  } catch (IOException e) {   throw new RuntimeException(e);  } } public void handle() {  // 模拟性能瓶颈的执行过程,3s处理一条消息.  new Thread() {   public void run() {    while (!handleFinish) {     try {      TimeUnit.SECONDS.sleep(3);     } catch (InterruptedException e1) {      // 不做处理.     }     String s = queue.peek();     if (s != null) {      queue.poll();      try {       bw.write(s);       bw.newLine();      } catch (IOException e) {      }     }     // 若队列为空并且消息发送完成.     if (queue.isEmpty() && sendFinish) {      // 计数器1->0      latch.countDown();      // 让处理过程结束.      handleFinish = true;      break;     }    }   }  }.start(); }  public void sendFinish() {  sendFinish = true; }  public void release() {  System.out.println("release!");  if (bw != null) {   try {    bw.close();   } catch (IOException e) {    // TODO 打印日志.   }  }  //其实使用queue = null就够了.  if (queue != null) {   queue.clear();   queue = null;  } }  public void sendMsg(String text) {  if (text != null && !text.isEmpty()) {   queue.add(text);  } } public static void main(String[] args) {  CountDownLatch latch = new CountDownLatch(1);  AsyncHandler handler = new AsyncHandler(latch);  handler.handle();  // 做一次检查.  Scanner scanner = new Scanner(System.in);  while (true) {   String text = scanner.next();   // 若用户选择退出.   if ("exit".equals(text)) {    // 表示消息已经发送完成.    handler.sendFinish();    break;   }   handler.sendMsg(text);  }  try {   // 阻塞主线程等待消息写入到本地文件完成.   latch.await();  } catch (InterruptedException e) {   e.printStackTrace();  }  // 释放资源 文件流,队列.  handler.release();  // 关闭控制台输入.  scanner.close(); }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中异步处理机制的应用场景有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中异步处理机制的应用场景有哪些

Java中异步处理机制的应用场景有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理
2023-05-31

Java 中 bin2hex 的异常处理机制有哪些?(Java bin2hex有哪些异常处理机制)

在Java编程中,bin2hex是一种将二进制数据转换为十六进制字符串的常见操作。然而,在进行这种转换过程中,可能会遇到各种异常情况。本文将详细介绍Java中bin2hex的异常处理机制。一、异常概述在Java
Java 中 bin2hex 的异常处理机制有哪些?(Java bin2hex有哪些异常处理机制)
Java2024-12-23

ajax同步和异步的应用场景有哪些

Ajax异步请求的主要应用场景包括:1. 实时更新数据:可以通过Ajax异步请求来更新页面上的数据,如即时聊天、动态通知等。2. 提交表单数据:使用Ajax异步请求可以在不刷新整个页面的情况下提交表单数据,并获取服务器返回的结果。3. 加载
2023-09-13

PHP 函数在异常处理中的应用场景有哪些?

在 php 中,异常处理函数提供了多种应用场景:try...catch...finally:捕获和处理特定异常类型。set_exception_handler:注册自定义异常处理函数。restore_exception_handler:恢复
PHP 函数在异常处理中的应用场景有哪些?
2024-04-19

Java 中 Flink 的应用场景究竟有哪些?(java中flink的应用场景有哪些)

在Java开发领域,Flink作为一种流处理框架,正逐渐受到广泛的关注和应用。它具有高效、灵活、可靠等特点,能够处理大规模的数据流,并提供了丰富的操作和处理逻辑。本文将详细介绍Java中Flink的应用场景,帮助读者更好地理解和应用这一技术。一、实
Java 中 Flink 的应用场景究竟有哪些?(java中flink的应用场景有哪些)
flinkJava2024-12-18

Java 中 strstr 的应用场景具体有哪些?(java strstr应用场景有哪些)

在Java编程中,strstr函数(在Java中通常指的是indexOf方法)是一个非常常用且重要的字符串处理工具,它在很多场景下都能发挥关键作用。一、字符串搜索与查找
Java 中 strstr 的应用场景具体有哪些?(java strstr应用场景有哪些)
Java2024-12-20

Java 中返回上一步有哪些常见的应用场景?(java返回上一步有哪些场景)

在Java编程中,返回上一步是一个在特定情况下非常有用的操作,它可以帮助我们处理各种复杂的业务逻辑和用户交互。以下是一些Java中返回上一步的常见场景:一、错误处理与回滚在进行数据库操作或文件处理等事务性操作时,如果发生
Java 中返回上一步有哪些常见的应用场景?(java返回上一步有哪些场景)
Java2024-12-20

Java 中 println 究竟有哪些应用场景呢?(Java中println的应用场景有哪些)

在Java编程中,println是一个非常常用的方法,它主要用于在控制台输出文本信息。以下是println的一些常见应用场景:一、调试与输出信息在开发过程中,调试是一个非常
Java 中 println 究竟有哪些应用场景呢?(Java中println的应用场景有哪些)
Java2024-12-19

java中异常处理机制的作用有哪些

这期内容当中小编将会给大家带来有关java中异常处理机制的作用有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  Java异常处理机制其最主要的几个关键字:try、catch、finally、thro
2023-05-31

Java中的`eques`有哪些具体的应用场景呢?(java eques有哪些应用场景)

在Java编程中,eques方法是一个非常重要的概念,它在对象的比较和集合操作中起着关键作用。本文将详细介绍eques方法的应用场景,帮助你更好地理解和使用它。一、对象的相等性判断
Java中的`eques`有哪些具体的应用场景呢?(java eques有哪些应用场景)
Java2024-12-21

java中反射机制的使用场景有哪些

这期内容当中小编将会给大家带来有关java中反射机制的使用场景有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式
2023-06-14

Java 中间件的应用场景具体有哪些?(java中间件的应用场景有哪些)

在现代的软件开发和企业级应用中,Java中间件扮演着至关重要的角色。它为不同的应用系统提供了强大的支持和连接,使得各种复杂的业务逻辑得以实现和管理。以下是Java中间件的一些主要应用场景:一、企业应用集成(EAI)EAI
Java 中间件的应用场景具体有哪些?(java中间件的应用场景有哪些)
Java2024-12-17

Java 代理模式的应用场景都有哪些?(java代理模式的应用场景有哪些)

在Java编程中,代理模式是一种结构型设计模式,它允许通过代理对象来控制对目标对象的访问。代理模式为其他对象提供了一种代理以控制对这个对象的访问。以下是Java代理模式的一些常见应用场景:远程代理(RemoteProxy)
Java 代理模式的应用场景都有哪些?(java代理模式的应用场景有哪些)
Java2024-12-23

Java aop 有哪些常见的应用场景?(Java aop应用场景有哪些)

在Java开发中,Aspect-OrientedProgramming(AOP)是一种重要的编程范式,它允许开发者将横切关注点(如日志记录、事务管理、性能监控等)从业务逻辑中分离出来,以提高代码的可维护性和可扩展性。以下是JavaAOP的一些常见应用场景:
Java aop 有哪些常见的应用场景?(Java aop应用场景有哪些)
Java2024-12-20

java中lamda的应用场景有哪些

集合操作:使用lamda表达式可以简化集合的遍历和操作,比如筛选、排序、映射等。线程处理:使用lamda表达式可以方便地创建匿名内部类,用于处理线程任务。GUI编程:在Swing或JavaFX等框架中,使用lamda表达式可以简化事件监听器
java中lamda的应用场景有哪些
2024-03-11

java中dictionary的应用场景有哪些

在Java中,Dictionary类是一个抽象类,通常用于存储键值对数据。它具有以下几种常见的应用场景:缓存数据:可以使用Dictionary类来存储缓存数据,以便快速访问和获取数据。国际化:可以使用Dictionary类来存储不同语言对应
java中dictionary的应用场景有哪些
2024-03-04

java中swt的应用场景有哪些

SWT(Standard Widget Toolkit)是一种用于构建图形用户界面的工具包,它类似于Swing和AWT,但是在实现上更接近底层操作系统的图形库,因此在性能和外观上通常比Swing更好。SWT通常用于构建Java桌面应用程序,
java中swt的应用场景有哪些
2024-03-06

java中method的应用场景有哪些

封装代码逻辑:将一系列相关的代码封装到一个方法中,可以提高代码的可读性和可维护性。提高代码的重用性:定义一个方法后,可以在不同的地方多次调用,避免重复编写相同的代码。参数传递:方法可以接受参数,可以将数据传递给方法进行处理并返回结果。返回值
java中method的应用场景有哪些
2024-03-12

Java中attribute的应用场景有哪些

在Java中,attribute(属性)可以用来描述一个对象的特征、状态或者行为。以下是一些常见的Java中attribute的应用场景:1. 类的属性:在Java中,可以使用attribute来描述一个类的特征或状态。例如,一个人的年龄、
2023-10-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录