domino java多线程运用

      多线程已经在很多应用中使用了,但在domino中很少有相关资料,能否实现多线程应用呢?百度查查了一下java的资料是可以的,直接转移过来使用就试试,结果能正常运行。已经把一些应用转到多线程处理了,速度还是有提高 的。

1)查找百度资料,根据教程处理

http://blog.csdn.net/aboy123/article/details/38307539

2)以下是java代理的内容,还要设置代理参数(如图),否则代理在bs运行有误

import lotus.domino.*;
import java.util.concurrent.*;  
import java.util.Date;  
import java.util.List;  
import java.util.ArrayList;  


class MyCallable implements Callable<Object> {  
	private String taskNum;  
	//可以通过更改这MyCallable函数,从外传递参数进来,如unid等
	MyCallable(String taskNum) {  
	   this.taskNum = taskNum;  
	}  
	  
	public Object call() throws Exception {  
	   System.out.println(">>>" + taskNum + "任务启动");  
	   Date dateTmp1 = new Date();  
	   Thread.sleep(1000);  
	   Date dateTmp2 = new Date();  
	   long time = dateTmp2.getTime() - dateTmp1.getTime();  
	   System.out.println(">>>" + taskNum + "任务终止");  
	   return taskNum + "任务返回运行结果,当前任务时间【" + time + "毫秒】";  
	}  
	}  

public class JavaAgent extends AgentBase {

    public void NotesMain() {

      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();

          // (Your code goes here)
          System.out.println("----程序开始运行----");  
          Date date1 = new Date();  
         
          int taskSize = 5;  
          // 创建一个线程池  
          ExecutorService pool = Executors.newFixedThreadPool(taskSize);  
          // 创建多个有返回值的任务  
          List<Future> list = new ArrayList<Future>();  
          for (int i = 0; i < taskSize; i++) {  
           Callable c = new MyCallable(i + " ");  
           // 执行任务并获取Future对象  
           Future f = pool.submit(c);  
           // System.out.println(">>>" + f.get().toString());  
           list.add(f);  
          }  
          // 关闭线程池  
          pool.shutdown();  
         
          // 获取所有并发任务的运行结果  
          for (Future f : list) {  
           // 从Future对象上获取任务的返回值,并输出到控制台  
           System.out.println(">>>" + f.get().toString());  
          }  
         
          Date date2 = new Date();  
          System.out.println("----程序结束运行----,程序运行时间【"  
            + (date2.getTime() - date1.getTime()) + "毫秒】");  
         

      } catch(Exception e) {
          e.printStackTrace();
       }
   }
}

3)优化原来lotusscript,把转到java多线程处理,我这里处理的数据不多,但发现已经有改善效果。

发布了76 篇原创文章 · 获赞 17 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weijia3624/article/details/49452981