|  | // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | package lambdas_jstyle_runnable | 
|  |  | 
|  | import lambdas_jstyle_runnable.inner.Delegator3 | 
|  | import lambdas_jstyle_runnable.inner.Implementer4 | 
|  | import java.util.ArrayDeque | 
|  | import java.util.Queue | 
|  |  | 
|  | private val queue : Queue<String> = ArrayDeque<String>() | 
|  |  | 
|  | fun publish(message: String) { | 
|  | queue.add(message) | 
|  | } | 
|  |  | 
|  | fun main(args: Array<String>) { | 
|  | assert(queue.isEmpty()) | 
|  | val runner = RunnableRunner() | 
|  | runner.submit(Implementer1().getRunnable()) | 
|  | runner.submit(Implementer2().getRunnable()) | 
|  | runner.submit(Delegator3(Thread.currentThread().priority)) | 
|  | if (runner.size() > 2) { | 
|  | runner.submit(Implementer4().getRunnable()) | 
|  | } | 
|  | runner.waitFutures() | 
|  | assert(queue.size == 3) | 
|  | } |