退避算法仿真

时间:2016-02-16 17:29:17

标签: java

我正在尝试模拟(仅模拟!!)退避算法,我不知道我是不是正确的路径?

无论如何,它是这样的:

  1. 每个帖子都有随机的时间段。
  2. 每个帖子将其时间段减少到0。
  3. 第一个Thread得到Time Slot = 0将读取全局变量。
  4. 读取之后,如果全局变量为0(0表示线程可以执行。重传,否则如果其1然后没有线程可以执行重传)则第一个线程将全局变量设为1,并执行重传(在这个例子中只是在屏幕上打印一些东西。)
  5. 在第一个线程完成后,他将全局变量设为0(因此下一个线程可以进行重传)。
  6. 等等......
  7. 那么我可以使用分布式系统(套接字TCP / UDP)实现这种情况吗?还是使用多线程?

    /**
     * canal is global variable . if 0 means can the thread can do the
     * retransmission else if its 1 then no thread can do retransmission
     */
    public int canal = 0;
    
    /**
     * Each thread got timeSlot that can take random value between two numbers 1 and 12 .
     * timeSlot value start decreasing until 0.
     */
     public void backOff() {
            int timeSlot = 1 + (int) (Math.random() * ((12 - 1) + 1));
            for (int i = timeSlot; i <= 0; i--) {
                timeSlot--;
                System.out.println("timeSlot number :" + timeSlot);
            }
            if (canal == 0) {
                canal = 1;
                System.out.println("retransmission)");
                canal = 0;
            }
     }  
    

0 个答案:

没有答案