Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分布式系统.P2P文件传输应用程序的事件驱动透视图_Java_Multithreading_Synchronization_Distributed_Event Driven - Fatal编程技术网

Java 分布式系统.P2P文件传输应用程序的事件驱动透视图

Java 分布式系统.P2P文件传输应用程序的事件驱动透视图,java,multithreading,synchronization,distributed,event-driven,Java,Multithreading,Synchronization,Distributed,Event Driven,我有一个P2P文件传输应用程序在后台工作,只有当两台机器都不使用时,文件共享才应该被激活。假设在连接到n台其他计算机的一台计算机上,共享程序在n+1个线程中运行以下代码: 我的问题是,在一般情况下,如何从事件驱动的角度实现该计划?我如何以及为什么在每一时刻选择下一个要执行的事件 致意 /* For eache one of the n peers */ synchronized void upload(Peer p) { while(p.notFinished())

我有一个P2P文件传输应用程序在后台工作,只有当两台机器都不使用时,文件共享才应该被激活。假设在连接到n台其他计算机的一台计算机上,共享程序在n+1个线程中运行以下代码:

我的问题是,在一般情况下,如何从事件驱动的角度实现该计划?我如何以及为什么在每一时刻选择下一个要执行的事件

致意

    /* For eache one of the n peers */
    synchronized void upload(Peer p) {
      while(p.notFinished()) {
      while(isBusy() || p.isBusy())
        wait();
        p.sendNextMB();
      }
    }



    synchronized void report() {
       while(true) {
          while(!isBusy()) wait();
          for(Peer p: peers) p.sendBusy();
          while(isBusy()) wait();
          for(Peer p: peers) p.sendIdle();
       }
    }