当前位置: 首页 > news >正文

网站有中文源码加英文怎么做免费源码分享论坛

网站有中文源码加英文怎么做,免费源码分享论坛,j2ee做网站,互联网公司排名对比hazelcast入门教程这是我的Hazelcast系列的第四部分。 如果一个人没有看到其他三个人#xff0c;我建议一个人去看第1 部分 #xff0c; 第2 部分和第3部分 。 记录中 日志记录是任何应用程序的重要功能#xff0c;我的示例也是如此。 System.out.println可以用作告诉用户控… hazelcast入门教程 这是我的Hazelcast系列的第四部分。 如果一个人没有看到其他三个人我建议一个人去看第1 部分 第2 部分和第3部分 。 记录中 日志记录是任何应用程序的重要功能我的示例也是如此。 System.out.println可以用作告诉用户控制台应用程序中正在发生什么的有用工具。 但是让我们面对现实吧如果您正在阅读如何为分布式应用程序使用工具那么该人确实不是初学者。 看到一系列日志消息不应吓到任何人。 实际上对于本文中的示例他们有必要了解谁在做什么。 毕竟我们将讨论线程编程。 Hazelcast的好伙伴似乎已经同意日志记录很重要因此有许多不同的方法来定义正在记录的库。 日志记录框架仅取决于JDK日志记录并且具有许多适配器甚至允许自定义日志记录框架。 一个人选择的日志适配器由属性hazelcast.logging.type设置为以下设置 JDK日志记录这是默认设置。 log4j slf4j 没有 我使用了Log4j2所以我选择了slf4j并放入了使其工作所需的四个 jar文件。 旋转分布式线程 像Hazelcast中的许多类一样IExecutorService实现了Java库ExecutorService的接口。 该接口定义什么是线程池。 该接口是java.util.concurrent包的一部分自Java 1.5开始就存在。 该程序包还具有其实现可以从java.util.concurrent.Executors中进行访问。 我希望我在Java 1.4或1.3或1.2或1.1中有类似的东西。 直到发生死锁之前使线程池变得很有趣。 现在我可以使用Java库的池了对我来说已经足够了。 ExecutorService具有有趣的“功能”。 必须关闭它们否则服务不会消失。 第一次使用它们时导致内存泄漏并关闭了JVM。 我在自己的测试中发现了该错误因此客户不必再看到我的学习经验。 IExecutorService的皱纹有所不同。 在所有线程完成之前该服务不会消失。 这导致许多不正常的关机。 你被警告了 IExecutorServices可以几种不同的方式共享线程。 这里是它们的详细信息 任何Ole实例 这是一个只调用submit(Callable call). 这不仅仅只是将线程随机设置到集群中。 它对该线程进行了一些负载平衡因此实例不会被线程破坏。 致特定成员 这是通过submit(Callable call, Member member)方法完成的。 这会将线程发送到集群的特定成员。 这里没有负载平衡 只是发送给会员。 小心一个成员很容易过载并在进行任何处理时真正踩刹车。 我可以将其视为创建自定义负载均衡器的一种方式。 致会员集合 是的可以将一个线程发送给多个成员。 当我进行示例编码时所有成员的行为就像他们拥有自己的线程并且不共享线程。 如果将Callable T作为其线程实现来实现则该方法使用成员作为键返回“未来地图”。 如果使用Runnable则不返回任何内容。 用正确的钥匙致会员 IMap的条目可以在群集中的任何位置。 如果需要对该条目进行处理则本地线程将必须通过网络上拉该条目。 如果条目很大可能会出现问题。 更好的方法是将希望较小的线程转移到条目上。 为此群集需要知道将其发送到哪里。 因此呼叫submit(Callable call, Object key) 。 致全体会员 这与提交成员集合的方式相同但是就像集群中的每个成员一样都是成员。 如果一个集群中有大量成员这可能会很“有趣”。 我想我在一个集群中听到了多达1000名成员。 确保这是人们想要的然后再调用它。 使用ExecutionCallback 这基本上是一种发出一些线程并异步返回结果的方法。 如果提交了一个线程则使用ExecutionCallback。 如果涉及多个成员则使用MultiExecutionCallback。 范例程式码 在开始之前请允许我说我没有IExecutorService中每个方法的示例。 但是对于每种讨论的类型我都有一个示例。 关于示例代码的另一件事。 出于指导目的我在以前的文章中做了一些复制和粘贴编码因此每个示例可以独立存在并且可以了解所处位置。 我在第3部分中做了很多。 如果没有注意到请再次查看。 这次我没有这样做因为将会复制很多代码并且结果会非常难看。 我使用了一个Enum我认为结果非常好。 由于示例数量有限我认为枚举是一个不错的选择并且使我能够以块的形式显示代码而如果首先显示框架则可以理解。 有了这个解释让我们继续前进 构架 这是主要的位。 它由主类和线程类组成。 注意主类如何显示调用线程可以提交的每种方式。 主要 package hazelcastservice;import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IExecutorService; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.RejectedExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory;/**** author Daryl*/ public class Main {private static final Logger logger LoggerFactory.getLogger(Main.class);public static final String SERVICE_NAME spinnerella;public static final int NUM_INSTANCES 5;/*** param args the command line arguments*/public static void main(String[] args) {System.setProperty(hazelcast.logging.type, slf4j);ListHazelcastInstance instances new ArrayList(NUM_INSTANCES);for(int i 0; i NUM_INSTANCES; i) {instances.add(Hazelcast.newHazelcastInstance());logger.info(instance {} up, i);}IExecutorService spinner instances.get(0).getExecutorService(SERVICE_NAME);try {HazelcastIExecutorServiceExamples.TO_SOME_MEMBER.example(instances, spinner);HazelcastIExecutorServiceExamples.TO_PARTICULAR_MEMBER.example(instances, spinner);HazelcastIExecutorServiceExamples.ON_THE_KEY_OWNER.example(instances, spinner);HazelcastIExecutorServiceExamples.ON_A_SET_OF_MEMBERS.example(instances, spinner);HazelcastIExecutorServiceExamples.ON_ALL_MEMBERS.example(instances, spinner);HazelcastIExecutorServiceExamples.CALLBACK.example(instances, spinner);HazelcastIExecutorServiceExamples.MULTIPLE_MEMBERS_WITH_CALLBACK.example(instances, spinner);//Lets setup a loop to make sure they are all done (Especially the callback ones)for(HazelcastIExecutorServiceExamples example: HazelcastIExecutorServiceExamples.values()) {while(!example.isDone()) {Thread.sleep(1000);}}} catch(ExecutionException ee) {logger.warn(Cant finish the job, ee);} catch(InterruptedException ie) {logger.warn(Everybody out of the pool, ie);} finally {// time to clean up my toysboolean allClear false;while(!allClear) {try {Thread.sleep(1000);Hazelcast.shutdownAll();allClear true;} catch(InterruptedException ie) {//got interrupted. try again} catch(RejectedExecutionException ree) {logger.debug(caught a RejectedExecutionException);allClear false;}}logger.info(All done);}} }线 package hazelcastservice;import java.io.Serializable; import java.util.Random; import java.util.concurrent.Callable; import org.slf4j.Logger; import org.slf4j.LoggerFactory;/*** This class was inspired by the song I Like to Move it from the movie * Madagascar by Dreamworks. I offer NO apologies for using it. * * To those software developers who like consistent results, I used java.util.Random to* make it loop inconsistently each time call is called. * * Sometimes you need to make your own entertainment.* author Daryl*/ public class MoveItMoveIt implements CallableInteger, Serializable {private static final Logger logger LoggerFactory.getLogger(MoveItMoveIt.class);private static final int UPPER_BOUND 15;Overridepublic Integer call() throws Exception {Random random new Random();int howMany random.nextInt(UPPER_BOUND); // int howMany 2;for(int i 0; i howMany; i) {logger.info(I like to Move it Move it!);}logger.info(Move it!);return howMany;} }细节 在这里我将展示所讨论的不同类型的呼叫。 请记住这些是Enum类的块。 done是一个受保护的变量并且需要实现public void example(ListHazelcastInstance instances, IExecutorService spinner) 。 任何Ole实例 TO_SOME_MEMBER() {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(Submit to some member.);FutureInteger howMany spinner.submit(new MoveItMoveIt());logger.info(It moved it {} times, howMany.get());done true;}}致特定成员 TO_PARTICULAR_MEMBER {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(Submit to a particular member.);Member member getRandomMember(instances);logger.debug(member is {}, member);FutureInteger howMany spinner.submitToMember(new MoveItMoveIt(), member);logger.info(It moved it {} times., howMany.get());done true;}private Member getRandomMember(ListHazelcastInstance instances) {SetMember members instances.get(0).getCluster().getMembers();int i 0;int max new Random().nextInt(instances.size());IteratorMember iterator members.iterator();Member member iterator.next();while(iterator.hasNext() (i max)) {member iterator.next();i;}return member;}}致会员集合 ON_A_SET_OF_MEMBERS {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(Send to some of the members);SetMember randomMembers getRandomMembers(instances);MapMember, FutureInteger results spinner.submitToMembers(new MoveItMoveIt(), randomMembers);for(FutureInteger howMany: results.values()) {logger.info(It moved {} times, howMany.get());}done true;}private SetMember getRandomMembers(ListHazelcastInstance instances) {int max new Random().nextInt(instances.size());SetMember newSet new HashSet(instances.size());int k 0;IteratorMember i instances.get(0).getCluster().getMembers().iterator();while(i.hasNext() k max) {newSet.add(i.next());k;}return newSet;}}用正确的钥匙致会员 ON_THE_KEY_OWNER {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(Send to the one owning the key);HazelcastInstance randomInstance getRandomInstance(instances);IMapLong, Boolean map randomInstance.getMap(default);Long one 1L;map.put(one, Boolean.TRUE);FutureInteger howMany spinner.submitToKeyOwner(new MoveItMoveIt(), one);logger.info(It moved it {} times., howMany.get());done true;}private HazelcastInstance getRandomInstance(ListHazelcastInstance instances) {return instances.get(new Random().nextInt(instances.size()));}}致全体会员 ON_ALL_MEMBERS {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(Send to all members);MapMember, FutureInteger results spinner.submitToAllMembers(new MoveItMoveIt());for(FutureInteger howMany: results.values()) {logger.info(It moved {} times, howMany.get());}done true;}}使用ExecutionCallback 此示例代码包含两段代码分别显示一个回调和多个回调。 CALLBACK {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(example with a callback);spinner.submit(new MoveItMoveIt(), new ExecutionCallbackInteger() {Overridepublic void onResponse(Integer response) {logger.info(It moved {} times, response);done true;}Overridepublic void onFailure(Throwable thrwbl) {logger.error(trouble in the callback, thrwbl);done true;}});} },MULTIPLE_MEMBERS_WITH_CALLBACK {Overridepublic void example(ListHazelcastInstance instances, IExecutorService spinner)throws ExecutionException, InterruptedException {logger.info(running on multiple members with callback);spinner.submitToAllMembers(new MoveItMoveIt(), new MultiExecutionCallback() {Overridepublic void onResponse(Member member, Object o) {logger.info(member finished with {} moves, o);}Overridepublic void onComplete(MapMember, Object map) {logger.info(All members completed);for(Object value: map.values()) {logger.info(It moved {} times, value);}done true;}});}结论 再次在自己的博客上发布自己的代码/想法非常好。 我快速浏览了Hazelcast的IExecutorService的功能。 我的示例代码遵循DRY原理。 完整的代码可以在这里找到。 参考资料 与我的Hazelcast指南一样我的信息来自Hazelcast文档可在此处找到。 翻译自: https://www.javacodegeeks.com/2014/10/beginners-guide-to-hazelcast-part-4.htmlhazelcast入门教程
http://www.zqtcl.cn/news/533893/

相关文章:

  • 炫酷表白网站在线制作微网站栏目图标
  • 西安做兼职网站设计昆山做网站的公司有哪些
  • vue手机网站开发买域名价格
  • 济南网站推广优化外包合肥住房和城乡建设部网站
  • 商品定制平台网站江苏港口建设费申报网站
  • 仿站酷网站模板网站建设捌金手指花总六
  • 南通网站建设计划书抖音关键词seo系统
  • 怎么做服务器网站下载链接生产类营销型网站
  • 做网站网站内容怎么找微信公众号免费做影视网站
  • 投资公司网站建设意义做一个网站成本大概多少钱
  • 网站建设的简洁性wordpress积分换购
  • 手机网站赏析做外贸女装有哪些网站有哪些
  • 网站建设与管理考察报告建材网站开发
  • 张家港专业做网站网站点击量 哪里查询
  • 网站设计软件开发论文网站建设的参考文献
  • 专业建筑工程网站陇西做网站的公司
  • 请别人做网站会不会被盗有创意的广告图片及赏析
  • qq官方网站在家有电脑怎么做网站
  • 做计量检定的网站网站建设专业可行性分析
  • 上饶市建设局网站电脑课做网站所需的软件
  • 广州论坛建站模板网站开发流程原理
  • 网站开发深入浅出 - python篇四川网络营销
  • 做外贸比较好用的网站有哪些网站logo教程
  • 自适应产品网站模板坪地网站建设信息
  • 如何免费推广网站简历生成网站
  • 专业建站开发影视软件开发定制
  • jsp网站开发什么框架中山h5模板建站
  • 网页qq登陆网站旅游网站开发的国内外现状
  • 电影发布网站模板天津网络维护公司
  • 如何用ae做模板下载网站平面设计线上培训机构