waitlist

waitlist

waitlist.svg

  • waitlistはDGMが所持している
  • waitlistはDGMの数だけ存在する

# setup

  • どのような変数を持ったDGがあるかを読み取りwaitlistのqueueに入れる
  • Take or Peekが読み取られる
  • 「CGはDGの変数すべて揃わないと実行されない」という特性を実現するためにあらかじめ変数を読み取っておく
  • どういったCGがあるかはこの時点ではまだわからない
  • Commandとしてwaitlistにaddしていく感じ

WaitList.java

1
2
3
4
5
6
7
8
9
public synchronized void add(Command cm) {
        if(waitList.containsKey(cm.key)){
            waitList.get(cm.key).add(cm);
        } else {
            LinkedBlockingQueue<Command> queue = new LinkedBlockingQueue<>();
            queue.add(cm);
            waitList.put(cm.key, queue);
        }
    }
  • waitListに"hello"と"world"がaddされている

スクリーンショット 2021-07-12 14.57.57.jpg

(src/test/java/christie/example/HelloWorld)

# put

  • DGを入れる
    • 変数の値をセットする
  • putして変数の値が揃ったCGはrunCommand()でTake or Peekが実行される
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy