JavaFuture模式

Posted Mature

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaFuture模式相关的知识,希望对你有一定的参考价值。

 1 /*
 2  * To change this license header, choose License Headers in Project Properties.
 3  * To change this template file, choose Tools | Templates
 4  * and open the template in the editor.
 5  */
 6 
 7 /**
 8  *
 9  * @author lx
10  */
11 
12 import java.util.concurrent.Callable;
13 import java.util.concurrent.ExecutionException;
14 import java.util.concurrent.FutureTask;
15 
16 public class FutureTackDome {
17 
18     
19     /**
20      * Java Future模式简单使用: 在此案例中模拟,接到到订单数据,并调用支付接口进行支付,支付成功返回2,支付失败返回0
21      * 
22      * @param args
23      * @throws Exception
24      * @throws ExecutionException
25      */
26     public static void main(String[] args) throws Exception, ExecutionException {
27         Callable<Student> callable = () -> {
28                     int id = 0;
29                     System.out.println("调用支付接口");
30                     while (id != 2) {
31                         Thread.sleep(5000);//模拟支付時間
32                         System.out.println("正在查询付款状态...");
33                         System.out.println("状态为:" + id);
34                         id++;
35                     }
36                     
37                     if (id == 2) {
38                         // 付款成功
39                         return new Student(id);
40                         
41                     } else {
42                         // 付款失败
43                         return new Student(0);
44                     }
45                 };
46         FutureTask<Student> futureTask = new FutureTask<>(callable);
47         new Thread(futureTask).start();
48 
49         while (futureTask.isDone()) {// 模拟等待支付状态回调
50 
51         }
52         System.out.println((futureTask.get().getId() == 2 ? "支付成功" : "支付失败"));
53 
54     }
55 }
56 //实体类
57 class Student {
58     Student() {
59 
60     }
61 
62     public Student(int id) {
63         super();
64         this.id = id;
65     }
66 
67     private int id;
68 
69     public int getId() {
70         return id;
71     }
72 
73     public void setId(int id) {
74         this.id = id;
75     }
76 
77     @Override
78     public String toString() {
79         return "Student [id=" + id + "]";
80     }
81 
82 }
83 
84 运行示例:
85 run:
86 调用支付接口
87 正在查询付款状态...
88 状态为:0
89 正在查询付款状态...
90 状态为:1
91 支付成功
92 成功构建 (总时间: 10 秒)

 

以上是关于JavaFuture模式的主要内容,如果未能解决你的问题,请参考以下文章

用于从 cloudkit 检索单列的代码模式/片段

尝试使用片段保存夜间模式状态

是否有在单个活动中处理多个片段的 Android 设计模式?

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us

常用代码片段

常用代码片段