小编Gre*_*een的帖子

两个线程如何"进入""同步"方法

我真的是Java兼容的新手,我正在尝试实现以下规范:

  • 我们有一个停车场,有一些公园景点
  • 每辆车都代表一条线,无休止地改变汽车状态从驾驶 - 停车.每辆车都有自己的停车位.
  • 当汽车处于停车状态时,它会试图停在一个地方(不需要他的地点).如果该地点是免费的,那么它停在其他地方,它将跳过这个停车阶段并返回开车.
  • 除非现场车主想要停车,否则该车仍然在现场.

这不是确切的规范,但我唯一的问题是:

我无法让汽车在转弯时跳过.如果两辆车选择相同的位置,则一辆车停放,另一辆车等待,直到公园空闲.这不是我想要的行为.我的第一个想法是简单地将read和write同步到一个占用的变量:

class Car implements Runnable {
    private CarState state = CarState.driving

    run {
        while(true) {
            switch(state) {
            case driving: 
                System.out.println(this + " driving.");
                state = parking;
                break;
            case parking: Spot s = CarPark.getRandomSpot();

                if(s.willingToPark(this)) {
                    System.out.println(s + " occupied. " + this 
                    + " skip park turn.");
                } else {
                    s.park(this);
                } 
                state = driving;
            }
        }

    }
}

class Spot {
    private boolean occupied = false;
    private Car owner = new …
Run Code Online (Sandbox Code Playgroud)

java multithreading

15
推荐指数
1
解决办法
661
查看次数

标签 统计

java ×1

multithreading ×1