返回顶部
首页 > 资讯 > 精选 >Java中异步处理机制的应用场景有哪些
  • 601
分享到

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

javaava 2023-05-31 04:05:24 601人浏览 安东尼
摘要

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(); }}

--结束END--

本文标题: Java中异步处理机制的应用场景有哪些

本文链接: https://lsjlt.com/news/223388.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中异步处理机制的应用场景有哪些
    Java中异步处理机制的应用场景有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。       通...
    99+
    2023-05-31
    java ava
  • ajax同步和异步的应用场景有哪些
    Ajax异步请求的主要应用场景包括:1. 实时更新数据:可以通过Ajax异步请求来更新页面上的数据,如即时聊天、动态通知等。2. 提...
    99+
    2023-09-13
    ajax
  • async/await异步应用的常用场景有哪些
    小编给大家分享一下async/await异步应用的常用场景有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言async/a...
    99+
    2024-04-02
  • PHP 函数在异常处理中的应用场景有哪些?
    在 php 中,异常处理函数提供了多种应用场景:try...catch...finally:捕获和处理特定异常类型。set_exception_handler:注册自定义异常处理函数。r...
    99+
    2024-04-19
    php 异常处理
  • java中反射机制的使用场景有哪些
    这期内容当中小编将会给大家带来有关java中反射机制的使用场景有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式...
    99+
    2023-06-14
  • java中aop的应用场景有哪些
    Java中AOP(面向切面编程)的应用场景包括:1. 日志记录:可以通过AOP将日志记录代码横切到各个业务方法中,实现统一的日志记录...
    99+
    2023-10-11
    java
  • Java中attribute的应用场景有哪些
    在Java中,attribute(属性)可以用来描述一个对象的特征、状态或者行为。以下是一些常见的Java中attribute的应用...
    99+
    2023-10-18
    Java
  • java中dictionary的应用场景有哪些
    在Java中,Dictionary类是一个抽象类,通常用于存储键值对数据。它具有以下几种常见的应用场景: 缓存数据:可以使用Di...
    99+
    2024-03-04
    java
  • java中swt的应用场景有哪些
    SWT(Standard Widget Toolkit)是一种用于构建图形用户界面的工具包,它类似于Swing和AWT,但是在实现上...
    99+
    2024-03-06
    java
  • java中lamda的应用场景有哪些
    集合操作:使用lamda表达式可以简化集合的遍历和操作,比如筛选、排序、映射等。 线程处理:使用lamda表达式可以方便地创...
    99+
    2024-03-11
    java
  • java中method的应用场景有哪些
    封装代码逻辑:将一系列相关的代码封装到一个方法中,可以提高代码的可读性和可维护性。 提高代码的重用性:定义一个方法后,可以在...
    99+
    2024-03-12
    java
  • java中代理模式有哪些应用场景
    java中代理模式有哪些应用场景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向...
    99+
    2023-06-14
  • java中异常处理机制的作用有哪些
    这期内容当中小编将会给大家带来有关java中异常处理机制的作用有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  Java异常处理机制其最主要的几个关键字:try、catch、finally、thro...
    99+
    2023-05-31
    java 异常处理
  • Java SE的应用场景有哪些
    Java SE(Java Standard Edition)是Java平台的标准版本,适用于多种应用场景。以下是其中一些常见的应用场...
    99+
    2023-10-07
    Java
  • Java pom的应用场景有哪些
    Java中的pom.xml是Maven项目管理工具中的配置文件,用于描述项目的构建信息,依赖关系,插件等。pom.xml的应用场景包...
    99+
    2024-04-02
  • 自然语言处理:Apache Java API 的应用场景有哪些?
    自然语言处理(Natural Language Processing,简称NLP)是人工智能领域的一个重要分支,它研究如何让计算机能够理解和处理自然语言,实现自动化的语言理解和生成。在实际应用中,NLP技术已经被广泛应用于文本分类、情感分析...
    99+
    2023-10-18
    api apache 自然语言处理
  • Java多态的应用场景有哪些
    Java多态的应用场景有以下几个:1. 方法重写:通过子类继承父类并重写父类的方法,可以根据实际对象的类型调用相应的方法,实现不同对...
    99+
    2023-09-22
    Java
  • 实时异步编程在Go语言中的应用场景有哪些?
    在当今互联网时代,实时性已经成为了很多应用的必备特性。为了实现实时性,异步编程成为了一个非常流行的编程模式。实时异步编程是指程序能够在实时场景下响应用户操作或者事件,而不是等待某个操作完成后再响应。Go语言是一种非常适合实时异步编程的语言...
    99+
    2023-06-25
    实时 异步编程 npm
  • 异步编程在ASP框架和NumPy中的应用场景有哪些?
    随着计算机科学技术的发展,异步编程也成为了一种热门的编程方式。异步编程主要是指在程序运行过程中可以同时执行多个任务,不必等待一个任务执行完成后再执行下一个任务。这种方式可以有效提高程序的运行效率,因此在ASP框架和NumPy中也被广泛应用...
    99+
    2023-06-03
    框架 异步编程 numy
  • PaddlePaddle中的文本处理技术有哪些应用场景
    PaddlePaddle中的文本处理技术可以应用于以下场景: 信息抽取:从大量文本数据中提取出有用信息,如实体识别、关系抽取等。...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作