zvvq技术分享网

如何利用Java框架进行分布式并发编程?(java分布

作者:zvvq博客网
导读借助 java 框架可有效进行分布式并发编程:spring 提供了 threadpooltaskexecutor、mdp 和 remote invocation framework,支持并行任务处理、消息异步处理和远程方法调用。akka 的 actor system 概念允许创

依靠 java 架构可有效开展分布式并发编程:spring 带来了 threadpooltaskexecutor、mdp 和 remote invocation framework,适用并行任务解决、信息异步处理和远程方法调用。akka 的 actor system 定义容许建立并发实体,根据消息传递体制融洽逻辑。 zvvq.cn

内容来自zvvq

运用 Java 架构开展分布式并发编程

本文来自zvvq

Java 架构如 Spring 和 Akka 提供了强大的特点,有利于开发分布式、并发的应用程序。本文介绍了怎样使用这个架构高效地完成分布式并发编程。 内容来自zvvq

应用 Spring 开展分布式并发编程 zvvq好,好zvvq

Spring 提供了多种用以分布式并发编程的部件:

内容来自samhan666

Spring ThreadPoolTaskExecutor:用以创建和管理线程池,适合于并行计算任务。 Spring Message Driven POJO (MDP):容许应用软件异步处理信息,非常适合使用消息队列开展分布式处理。 Spring Remote Invocation Framework:适用在不同 JVM 过程中间远程调用方式,完成并发的分布式服务。实战案例:应用 ThreadPoolTaskExecutor 并行化任务 zvvq

@Configuration 内容来自zvvq,别采集哟

publicclassAsyncConfiguration{ 本文来自zvvq

@Bean

copyright zvvq

publicExecutortaskExecutor(){

内容来自zvvq,别采集哟

ThreadPoolTaskExecutorexecutor=newThreadPoolTaskExecutor();

内容来自zvvq,别采集哟

executor.setCorePoolSize(5); 内容来自zvvq

executor.setMaxPoolSize(10); 内容来自samhan666

executor.setQueueCapacity(100); 内容来自zvvq

returnexecutor;

zvvq

} copyright zvvq

@Bean 内容来自samhan

publicAsyncServiceasyncService(){ zvvq

returnnewAsyncServiceImpl();

内容来自samhan666

} 内容来自zvvq

} zvvq.cn

publicinterfaceAsyncService{ zvvq.cn

voiddoAsyncWork(Stringinput);

zvvq

}

zvvq好,好zvvq

publicclassAsyncServiceImplimplementsAsyncService{ zvvq.cn

@Override

内容来自zvvq,别采集哟

publicvoiddoAsyncWork(Stringinput){ 本文来自zvvq

//实行耗时的操作

zvvq

try {

内容来自samhan666

Thread.sleep(500); zvvq好,好zvvq

} catch (InterruptedException e) {

copyright zvvq

e.printStackTrace();

内容来自zvvq,别采集哟

}

zvvq.cn

// 导出处置结果 内容来自zvvq

System.out.println("Processed input: " + input); 内容来自zvvq

}

内容来自zvvq,别采集哟

} copyright zvvq

应用 Akka ActorSystem开展并发编程

copyright zvvq

Akka 架构带来了 Actor System 定义,每个 Actor 表明一个并发实体,能够与其它 Actor 互换信息并实施自身的思路。 内容来自samhan666

实战案例:应用 Actor System 构建并行WordCounter 内容来自samhan666

publicclassWordCounterActorextendsAbstractActor{

内容来自samhan

privateintcount=0; 内容来自samhan666

@Override 本文来自zvvq

publicReceivecreateReceive(){ 内容来自samhan666

returnreceiveBuilder() 内容来自zvvq,别采集哟

.match(String.class,this::processWord) 内容来自zvvq,别采集哟

.build(); 本文来自zvvq

}

zvvq.cn

privatevoidprocessWord(Stringword){

内容来自samhan

count++;

内容来自samhan666

}

zvvq.cn

@Override

copyright zvvq

publicvoidpreStart(){ 内容来自zvvq

// Actor 运作时的思路

内容来自zvvq,别采集哟

} 内容来自samhan666

@Override zvvq好,好zvvq

publicvoidpostStop(){

本文来自zvvq

// Actor 终止时的逻辑 内容来自zvvq

}

本文来自zvvq

}

zvvq

public class WordCounterMain { zvvq.cn

public static void main(String[] args) {

本文来自zvvq

ActorSystem system = ActorSystem.create("word-counting-system"); copyright zvvq

ActorRef actorRef = system.actorOf(Props.create(WordCounterActor.class)); copyright zvvq

// 推送单词给 Actor 解决 内容来自zvvq

actorRef.tell("word1", ActorRef.noSender()); 本文来自zvvq

actorRef.tell("word2", ActorRef.noSender()); 内容来自samhan666

// 关掉 Actor System 内容来自zvvq,别采集哟

system.terminate(); zvvq好,好zvvq

} 内容来自samhan666

}

内容来自samhan

以上就是如何运用Java架构开展分布式并发编程?的详细内容,大量请关注其他类似文章!

zvvq