asyn 4 j非同期フレームワークの使用
2798 ワード
紹介する
asyn 4 jはgoogleのJava非同期メソッド呼び出しフレームワークであり、消費者と生産者モデルに基づいている.非同期メソッド実行、非同期コールバック実行、非同期ワークキャッシュモジュールを含むSpringをサポートします.このフレームワークを使用すると、開発者は関連するマルチスレッドコードを多く書かないことができます.
使用
クラスdemo
非同期呼び出しクラス
非同期コールバッククラスTargetBack
以上のコードはAsyn 4 jの基本的な使用であり、このフレームワークとSpringを統合して使用する必要がある場合は、以下のコードに従って注入するだけでよい.
asyn 4 jはgoogleのJava非同期メソッド呼び出しフレームワークであり、消費者と生産者モデルに基づいている.非同期メソッド実行、非同期コールバック実行、非同期ワークキャッシュモジュールを含むSpringをサポートします.このフレームワークを使用すると、開発者は関連するマルチスレッドコードを多く書かないことができます.
使用
クラスdemo
package com;
import com.googlecode.asyn4j.core.callback.AsynCallBack;
import com.googlecode.asyn4j.core.handler.CacheAsynWorkHandler;
import com.googlecode.asyn4j.service.AsynService;
import com.googlecode.asyn4j.service.AsynServiceImpl;
/**
*
*/
public class Demo {
public static void main(String[] args) {
//
/*
(maxCacheWork) – 300( )
(addWorkWaitTime) -- Long.MAX_VALUE( )
(workThreadNum) ---- CPU /2 +1( )
(callBackThreadNum) --- CPU /2( )
(closeServiceWaitTime) ---- 60000s( )*/
//(int maxCacheWork, long addWorkWaitTime, int workThreadNum,int callBackThreadNum, long closeServiceWaitTime)
AsynService asynService = AsynServiceImpl.getService(3000, 3000L,10, 150,6000L);
//
asynService.setWorkQueueFullHandler(new CacheAsynWorkHandler(500));
//
asynService.init();
//
AsynCallBack back = new TargetBack();
for (int i = 0; i < 100; i++) {
// - TargetService test , asynej+ i
asynService.addWork(TargetService.class, "test", new Object[] { "asyn4j" + i }, new TargetBack());
//
TargetService targetService = new TargetService ();
asynService.addWork(targetService , "test", new Object[] { "asyn4j" + i },new TargetBack());
}
}
}
非同期呼び出しクラス
package com;
/**
*
*/
public class TargetService {
public User test(String name){
//System.out.println(name +" test is execute!");
User u = new User();
u.setName(" ");
return u;
}
}
class User{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
非同期コールバッククラスTargetBack
package com;
import com.googlecode.asyn4j.core.callback.AsynCallBack;
/**
*
*/
public class TargetBack extends AsynCallBack {
@Override
public void doNotify() {
//
//System.out.println();
User u = (User) this.methodResult;
System.out.printf(u.getName());
}
}
以上のコードはAsyn 4 jの基本的な使用であり、このフレームワークとSpringを統合して使用する必要がある場合は、以下のコードに従って注入するだけでよい.