Async异步处理

MyAsync

 1 package com.zhangmeng.xml;
 2
 3 import android.os.AsyncTask;
 4 import android.widget.ProgressBar;
 5 import android.widget.TextView;
 6
 7 /**
 8  * Created by zhangmeng on 2016/10/6.
 9  */
10
11 public class MyAsync extends AsyncTask<Integer,Integer,String> {
12      private ProgressBar bar;
13      private TextView tv;
14
15     public MyAsync(ProgressBar bar,TextView tv) {
16         super();
17         this.bar = bar;
18         this.tv=tv;
19     }
20
21     @Override
22     protected void onPreExecute() {
23         super.onPreExecute();
24         tv.setText("The file is downloading! Please wait....");
25     }
26
27
28
29
30
31     @Override
32     protected String doInBackground(Integer... params) {
33         DelayOperator delayOperator=new DelayOperator();
34         int i;
35         for (i = 1; i <1000000; i++) {
36             delayOperator.delay(params[0]);
37             publishProgress(i);
38         }
39
40         return i + params[0].intValue() + "";
41     }
42
43
44     @Override
45     protected void onProgressUpdate(Integer... values) {
46         bar.setProgress(values[0]);
47
48     }
49 }

 1 package com.zhangmeng.xml;
 2 import android.support.v7.app.AppCompatActivity;
 3 import android.os.Bundle;
 4 import android.view.View;
 5 import android.widget.Button;
 6 import android.widget.ProgressBar;
 7 import android.widget.TextView;
 8
 9 public class MainActivity extends AppCompatActivity {
10
11     private Button bt;
12     private TextView textView;
13     private ProgressBar bar;
14
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         bt= (Button) findViewById(R.id.btn);
20         textView=(TextView) findViewById(R.id.tv);
21         bar=(ProgressBar) findViewById(R.id.pb);
22         bt.setOnClickListener(new View.OnClickListener() {
23             @Override
24             public void onClick(View v) {
25                 MyAsync async=new MyAsync(bar,textView);
26                 async.execute(100);
27             }
28         });
29
30
31
32     }
33
34
35
36 }

delay

 1 package com.zhangmeng.xml;
 2
 3 /**
 4  * Created by zhangmeng on 2016/10/5.
 5  */
 6
 7 public class DelayOperator {
 8     public void delay(int time){
 9         try {
10             Thread.sleep(time);
11         } catch (InterruptedException e) {
12             e.printStackTrace();
13         }
14     }
15 }

时间: 2024-10-26 15:12:31

Async异步处理的相关文章

使用spring的@Async异步执行方法

应用场景: 1.某些耗时较长的而用户不需要等待该方法的处理结果 2.某些耗时较长的方法,后面的程序不需要用到这个方法的处理结果时 在spring的配置文件中加入对异步执行的支持 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.spri

Async异步编程入门示例

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace AsyncDemo 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Console.WriteLine("异步方法测试开始!&quo

js:nodejs通过async异步提交事务数据

一,async异步编程 1,异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数.ajax请求等等 waterfall函数 瀑布流 waterfall每个函数产生的值,都将传给下一个函数 2,事务 数据库事物(transaction)就是一组SQL语句,这组SQL语句是一个逻辑工作单元.我们可以认为事务就是一组不可 分割的SQL语句,在执行时,应该作为一个整体永久性地修改数据库的内容,或者作为一个整体取消对数据库的

第二章 有什么理由使用Async异步编程

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而为,愿爱技术的园

利用Spring MVC中@Async异步特性改善耗时操作的用户体验

Web应用中,有时会遇到一些耗时很长的操作(比如:在后台生成100张报表再呈现,或 从ftp下载若干文件,综合处理后再返回给页面下载),用户在网页上点完按钮后,通常会遇到二个问题:页面超时.看不到处理进度. 对于超时,采用异步操作,可以很好的解决这个问题,后台服务收到请求后,执行异步方法不会阻塞线程,因此就不存在超时问题.但是异步处理的进度用户也需要知道,否则不知道后台服务何时完成,不知道是否继续等候,还是关掉页面. 思路: 1.browser -> Spring-MVC Controller

springboot+async异步接口实现和调用

什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行. 如何实现异步调用? 多线程,这是很多人第一眼想到的关键词,没错,多线程就是一种实现异步调用的方式. 在非spring目项目中我们要实现异步调用的就是使用多线程方式,可以自己实现Runable接口或者集成Thread类,或者使用jdk1.5以上提供了的Executors线程池. StrngBoot中则提供了很方便的方式执行异步调

async异步注解和aspect切面注解等注解的原理

在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下spring是如何完成这个功能的. 1.spring 在扫描bean的时候会扫描方法上是否包含@async的注解,如果包含的,spring会为这个bean动态的生成一个子类,我们称之为代理类(?). 2.代理类是继承我们所写的bean的,然后把代理类注入进来,在执行此方法时会到代理类中,代理类判断此方法需要异步执行,就不会调用父类 (我们原本写的bean)的对应方法.

Async 异步转同步详细流程解释

安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 流程控制: 简化九种常见的流程的处理 集合处理:如何使用异步操作处理集中的数据 工具类:几个常用的工具类 本文主要介绍流程控制部分,后续内容持续更新,由于node.js是异步编程模型,有许多在同步编程中很容易做到的事情,现在就会变的很麻烦,并且存在很多的callback.但是,Async的流程控制给我们coder带来了许多便利. 1.ser

SpringBoot @Async 异步处理业务逻辑和发短信逻辑

有个业务场景,业务数据审核通过后需要给用户发短信,发短信过程比较耗时,可能需要几秒甚至十几秒,因此使用异步发短信 使用了注解@Async来实现: 1.SpringApplication启用注解@EnableAsync @SpringBootApplication @ImportResource(locations = { "classpath:/spring/spring-*.xml" }) @EnableTransactionManagement(proxyTargetClass=t

Spring Boot Async异步执行

异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑. 通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下: ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(() -> { try { // 业务逻辑 } catch (Exception e) { e.printStackTrace(