依靠 java 架构可有效开展分布式并发编程:spring 带来了 threadpooltaskexecutor、mdp 和 remote invocation framework,适用并行任务解决、信息异步处理和远程方法调用。akka 的 actor system 定义容许建立并发实体,根据消息传递体制融洽逻辑。
运用 Java 架构开展分布式并发编程
Java 架构如 Spring 和 Akka 提供了强大的特点,有利于开发分布式、并发的应用程序。本文介绍了怎样使用这个架构高效地完成分布式并发编程。
应用 Spring 开展分布式并发编程
Spring 提供了多种用以分布式并发编程的部件:
Spring ThreadPoolTaskExecutor:用以创建和管理线程池,适合于并行计算任务。 Spring Message Driven POJO (MDP):容许应用软件异步处理信息,非常适合使用消息队列开展分布式处理。 Spring Remote Invocation Framework:适用在不同 JVM 过程中间远程调用方式,完成并发的分布式服务。实战案例 :应用 ThreadPoolTaskExecutor 并行化任务
@Configuration
publicclassAsyncConfiguration{
@Bean
publicExecutortaskExecutor(){
ThreadPoolTaskExecutorexecutor=newThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(100);
returnexecutor;
}
@Bean
publicAsyncServiceasyncService(){
returnnewAsyncServiceImpl();
}
}
publicinterfaceAsyncService{
voiddoAsyncWork(Stringinput);
}
publicclassAsyncServiceImplimplementsAsyncService{
@Override
publicvoiddoAsyncWork(Stringinput){
//实行耗时的操作
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 导出处置结果
System.out.println("Processed input: " + input);
}
}
应用 Akka ActorSystem开展并发编程
Akka 架构带来了 Actor System 定义,每个 Actor 表明一个并发实体,能够与其它 Actor 互换信息并实施自身的思路。
实战案例 :应用 Actor System 构建并行WordCounter
publicclassWordCounterActorextendsAbstractActor{
privateintcount=0;
@Override
publicReceivecreateReceive(){
returnreceiveBuilder()
.match(String.class,this::processWord)
.build();
}
privatevoidprocessWord(Stringword){
count++;
}
@Override
publicvoidpreStart(){
// Actor 运作时的思路
}
@Override
publicvoidpostStop(){
// Actor 终止时的逻辑
}
}
public class WordCounterMain {
public static void main(String[] args) {
ActorSystem system = ActorSystem.create("word-counting-system");
ActorRef actorRef = system.actorOf(Props.create(WordCounterActor.class));
// 推送单词给 Actor 解决
actorRef.tell("word1", ActorRef.noSender());
actorRef.tell("word2", ActorRef.noSender());
// 关掉 Actor System
system.terminate();
}
}
以上就是如何运用Java架构开展分布式并发编程?的详细内容,大量请关注其他类似文章!