您的位置:首页 > 编程语言 > Java开发

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

2012-03-13 15:03 405 查看
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?}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: