asyn 4 j非同期フレームワークの使用

2798 ワード

紹介する    
       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を統合して使用する必要がある場合は、以下のコードに従って注入するだけでよい.