Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. public static void main(String[] args) {
  2. System.out.println("************************** start *****************************");
  3. new AkkaWay().run();
  4. System.out.println("************************** END *****************************");
  5. }
  6.  
  7. private void run() {
  8. ActorSystem system = ActorSystem.create("CalcSystem");
  9. ActorRef master = system.actorOf(Master.createMaster(), "master");
  10. master.tell(new Calculate(), ActorRef.noSender());
  11. while(!master.isTerminated()){
  12. try{
  13. //System.out.println("*********************************** Thread *************************************************");
  14. Thread.sleep(100);
  15. }catch(Exception e){
  16. e.printStackTrace();
  17. }
  18. }
  19. }
  20.  
  21. public Master() {
  22. workerRouter = this.getContext().actorOf(Worker.createWorker().withRouter(new RoundRobinRouter(4)),"workerRouter");
  23. }
  24.  
  25. @Override
  26. public void onReceive(Object message) {
  27. if (message instanceof Calculate) {
  28. time.start();
  29. processMessages();
  30. } else if (message instanceof Result) {
  31. list.add(((Result) message).getFactorial());
  32. if (list.size() == messages)
  33. end();
  34. } else {
  35. unhandled(message);
  36. }
  37. }
  38.  
  39. private void processMessages()
  40. {
  41. //read data from file/database (40 millions rows )
  42. for (int i = 0; i < rows; i++) {
  43.  
  44. workerRouter.tell(new Work(), getSelf());// each row send
  45. }
  46. }
  47.  
  48. private void end() {
  49. time.end();
  50. System.out.println("Done: " + time.elapsedTimeMilliseconds()+"["+time.elapsedTimeMilliseconds()/1000+" secs]");
  51. getContext().system().shutdown();
  52. }
  53.  
  54. public static Props createMaster() {
  55. return Props.create(Master.class, new ArraySeq<Object>(0));
  56. }
  57.  
  58. @Override
  59. public void onReceive(Object message) {
  60. if (message instanceof Work) {
  61. //evaluate Groovy expression
  62. getSender().tell(new Result(bigInt), getSelf());
  63. } else
  64. unhandled(message);
  65. }
  66.  
  67. public static Props createWorker() {
  68. return Props.create(Worker.class, new ArraySeq<Object>(0));
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement