java 多线程 异步日志_java利用多线程实现异步调用 | 学步园

java利用多线程实现异步调用

package com.test.t1;

public class Test2 {

public static void main(String[] args) {

final FutureTicket ft = new FutureTicket(new MyProcessData());

// 在新线程中调用耗时操作

new Thread() {

public void run() {

ft.makeRealData();

}

}.start();

ft.putData();

}

}

class FutureTicket {

private Object data = null;

private boolean completed = false;

private ProcessData pd;

public FutureTicket(ProcessData pd) {

this.pd = pd;

}

public synchronized void makeRealData() {

if (this.completed)

return;

// 获取数据的耗时操作.这里用Sleep代替

try {

Thread.sleep(10000);

} catch (Throwable t) {

}

this.data = "返回的数据内容";

this.completed = true;

notifyAll();

}

public synchronized void putData() {

while (!this.completed) {

try {

wait();

} catch (Throwable t) {

}

}

// return this.data;

// 不用返回了,直接处理

this.pd.process(this.data);

// alert(?);

}

// 这个方法也可以不要了.

public boolean isCompleted() {

return this.completed;

}

}

interface ProcessData {

public void process(Object data);

}

class MyProcessData implements ProcessData {

public void process(Object data) {

// 你不管什么时候起初数据data被获取了.

// 你只要规定如果获取到数据了如何处理

System.out.println(data.toString() + "处理完成...........");

// insert into dataBase?

}

}

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页