1. 程式人生 > >Java模擬耗時任務非同步執行

Java模擬耗時任務非同步執行


說明:耗時任務開啟單獨執行緒處理,任務執行緒處理完畢通知主執行緒

1、回撥介面定義

public interface ResponseCallBack {
    public void printMsg(String msg);
}

2、模擬耗時任務執行緒

public class TestMain {

    public static void main(String[] args){
        ExecutorService executorService = Executors.newFixedThreadPool(1);
        executorService.submit(new TestThread(new ResponseCallBack() {
            @Override
            public void printMsg(String msg) {
                System.out.println("print message: " + msg);
            }
        }));
        executorService.shutdown();
    }
}

class TestThread implements Runnable {

    private ResponseCallBack responseCallBack;

    public TestThread(ResponseCallBack responseCallBack) {
        this.responseCallBack = responseCallBack;
    }

    @Override
    public void run() {
        try {
            System.out.println(Thread.currentThread().getName() + " start execute");
            Thread.sleep(3000);   // 耗時任務
            System.out.println(Thread.currentThread().getName() + " end execute");
            this.responseCallBack.printMsg("Hello Call Back");  // 耗時任務執行完後,通知主執行緒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}


相關推薦

Java模擬耗時任務非同步執行

說明:耗時任務開啟單獨執行緒處理,任務執行緒處理完畢通知主執行緒 1、回撥介面定義 public interface ResponseCallBack { public void printMsg(String msg); } 2、模擬耗時任務執行緒 public

php 執行耗時任務 後臺執行

lib pan fun spl nbsp ESS finish controls 耗時任務 // 你要跳轉的url $url = "http://www.baidu.com/"; // 如果使用的是php-fpm if(function_exists(‘fa

Java CompletableFuture:allOf等待所有非同步執行任務結束

private void method() throws ExecutionException, InterruptedException { CompletableFuture<String> f1 = CompletableFuture.supplyAsync(()

Java CompletableFuture組合拼裝非同步執行任務(2)

Java CompletableFuture組合拼裝非同步執行緒任務 private void seq() throws ExecutionException, InterruptedException { System.out.println("時間1:"

Java非同步執行任務常用方式FutureTask和ExecutorService

1,ExecutorService結合線程池package com.asyn; import java.util.Date; import java.util.concurrent.ExecutorS

java 非同步任務佇列執行--需要注意的地方

參照1寫的非同步任務佇列過程中,發現一些java基礎知識掌握不夠。 1)Iterable 類的forEach方法和for迴圈方法的不同: try { List<Future<Object>> futures = exe

Java定時任務:利用java Timer類實現定時執行任務的功能

lpad 虛擬 觀察 exce 就是 set ring 構造 trac 一、概述 在java中實現定時執行任務的功能,主要用到兩個類,Timer和TimerTask類。其中Timer是用來在一個後臺線程按指定的計劃來執行指定的任務。 TimerTask一個抽象類,它的子類代

Django框架上使用Celery非同步執行任務

使用Django框架程式設計時, 由於框架的封裝限制,在沒有編寫底層程式碼的情況下,要把一段程式碼放到一個新的程序裡去執行,我們就會使用非同步執行任務的包Celery。 虛擬環境安裝celery pip install celery 一般把耗時的函式放在任務之中去執行,以傳送簡訊為

IMM服務(智慧媒體管理)通過Notify查詢非同步任務執行結果

IMM服務(智慧媒體管理)通過Notify查詢非同步任務的執行結果 在使用智慧媒體管理的過程中,我們可能碰到一些大的文件的轉換,當我們需要知道結果的時候,一直輪詢 GetOfficeConversionTask介面去獲取任務狀態其實是浪費時間的。其實IMM服務提供任務結果非同步反向通知的功能,今天我們就使用

java:Map集合模擬鬥地主,多執行模擬搶地主 例項

 原始碼如下: package selfpractice.day4; import java.util.*; //多執行緒模擬搶地,重點程式碼位於loot()方法內 public class Practice_Poker { public static void main(S

java模擬執行緒http請求

package test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import

29-非同步任務提交執行架構

非同步任務提交執行架構 類關係圖 示例:執行緒池提交Runnable任務 示例:執行緒池提交Callable任務 Exec

java開發定時任務執行時間

定時任務執行時間配置詳解 Seconds Minutes Hours Day-of-month Month Day-of-Week Year
    秒         分 &

Fork/Join框架(四)非同步執行任務

宣告:本文是《 Java 7 Concurrency Cookbook 》的第五章,作者: Javier Fernández González     譯者:許巧輝 校對:方騰飛 非同步執行任務 當你在ForkJoinPool中執行ForkJoinTask時,你可以使用同步或非同步方式來實現。

(十七)java併發程式設計--任務執行執行緒池的使用

大多數併發程式圍繞著”任務執行”來構造的: 任務通常是一些抽象的且離散的工作單元。通過把一個用程式的共工作分解到多個任務中,可以簡化程式的組織結構,提供一種自然的事務邊界來優化錯誤恢復過程,以及提供一種自然的工作結構來提升併發性。 1 線上程中執行任務

如何寫 執行耗時任務的、可隨時立即退出的函式 呢?

如題。 稍微解釋下,因為有可能有人會誤會:放新執行緒裡面去不就可以了?這沒有解決問題。如此的話,你那個執行緒函式怎麼寫?或者執行緒函式裡呼叫的某個任務函式怎麼寫?總之,多執行緒雖然總是出現在這些問題的解決方案中,但不是多執行緒解決了這個問題。嗯……不知道說清楚了沒? 目前我心裡的答案只有這一種模式

JAVA學習之路(多執行緒)---模擬售票(細解)

首先看題目描述: 假設有火車票100張,建立4個執行緒模擬4個售票點,每100ms售出一張,打印出售票過程,格式如下: 視窗3:賣出第100張票 視窗4:賣出第99張票  ............ ............ 簡單的思路就是建立一個類,首先肯定要去繼承Thread。開啟執行

Java執行緒之建立任務執行

Runnable建立執行緒 任務就是物件。為了建立任務,必須首先為任務定義一個類。任務類必須實現Runnable介面。Runnable介面非常簡單,它只包含一個run方法。需要實現這個方法來告訴系統執行緒將如何執行。開發一個任務類的模板如圖29-2a所示。

Java執行緒--非同步執行框架Executor

Eexecutor作為靈活且強大的非同步執行框架,其支援多種不同型別的任務執行策略,提供了一種標準的方法將任務的提交過程和執行過程解耦開發,基於生產者-消費者模式,其提交任務的執行緒相當於生產者,執行任務的執行緒相當於消費者,並用Runnable來表示任務,Execu

統計執行緒池所有任務執行耗時

ExecutorService executor = Executors.newFixedThreadPool(10); long start = System.currentTimeMillis(); for (int i =