に通知します。代わりに、単に "hi"で停止し、pause()関数に固執します。どのように私はプログラムを続けることができるかについての任意のアイデア?Groovyのを待つ/ Iは次のGroovyコードを持って
3
A
答えて
2
ブライアンが言うように、マルチスレッドと並列性は巨大な領域であり、そして取得するよりも、それは間違って取得することが容易であること、右...
はあなたのコードの作業を取得するためには、あなたの」あなたはGroovyのを使用している場合
abstract class Actor implements Runnable {
synchronized void proceed() { notify() }
synchronized void pause() { wait() }
}
class MyActor extends Actor {
void run() {
println "hi"
pause()
println "hi again"
}
}
def theactor = new MyActor() // Create an instance of MyActor
def actorThread = new Thread(theactor) // Create a Thread to run this instance in
actorThread.start() // Thread.start() will call MyActor.run()
Thread.sleep(500) // Make the main thread go to sleep for some time so we know the actor class is waiting
theactor.proceed() // Then call proceed on the actor
actorThread.join() // Wait for the thread containing theactor to terminate
しかし、私は真剣にGroovyのに並行性をもたらし、本当に自分の作品を知っている人々によって書かれているa framework like Gparsを使用することを検討します:dがこのような何かを持っている必要があります。私はこのようなコードの任意の一時停止を許可するものは考えられません...あなたのコードを代わりに使用パターンの1つに合わせるように設計することはできますか?
2
スレッディングは大きな話題であり、スレッドAPIを直接操作することなく多くの一般的なことを行うためのJavaにライブラリがあります。 'Fire and Forget'の簡単な例の1つはTimerです。
しかし、あなたの直接の質問に答えてください。別のスレッドが続行するようスレッドに通知する必要があります。待ち時間のdocs()
は、別のスレッドが 通知()メソッドまたはこのオブジェクトののnotifyAll()メソッドを呼び出すまで、現在のスレッドを待機させを参照してください。 という単語では、このメソッドは単に wait(0)という呼び出しを実行する場合とまったく同じように動作します。
単純な「修正」は、あなたの探索を続けるためにあなたの待ち時間に一定の期間を追加することです。私は本「Java Concurrency in Practice」を提案します。
synchronized void pause() {
//wait 5 seconds before resuming.
wait(5000)
}
関連する問題
- 1. GroovyのGPars、Groovyの持つGParsを使用して
- 2. Groovyの - 私たちは、単純なGroovyのクラス持っメタクラス
- 3. LocalDateとLocalDateTimeを持つGroovyのTimeCategory
- 4. json coversionの特性を持つgroovyオブジェクト
- 5. メイクキャッシュオブジェクトIは、次のコードを持って深夜
- 6. 「GetAt機能は、」私のGroovyのコード行ではGroovyの
- 7. I次のコードを持っているボトム
- 8. Groovyの正規表現次のGroovyコードのswitchステートメントを考えるとswitch文のキャプチャグループ
- 9. コードイグナイタアクティブレコード - Iは、MySQL 5.1で次のスキーマを持つテーブルを持っているポイントカラム
- 10. アクセス変数Iは、次のコードを持って外のtry-catchブロックを
- 11. IはNode.jsのアプリケーションで次のコードを持っているノードlibcurlの
- 12. GroovyとGroovy ++は2つの言語か1つの言語ですか?
- 13. Groovyスクリプトの2つのテーブルクエリ
- 14. GroovyをGroovyコードをプリエンプティブJavaプロジェクトに統合する際の問題点
- 15. はDbUpdateException iは、次のレジスタアクションメソッドを持っている私のコントローラメソッド
- 16. 私は次のコードを持っている二つのリスト
- 17. Groovyの
- 18. 待って、その後、私は、コードを持っているフォーム
- 19. は、私は次のPHPコードを持って戻ってMySQLの
- 20. Java EEアプリケーションでのGroovyコードのコンパイル
- 21. :ネストされたsIFR要素Iは、次のHTMLを持って
- 22. Groovyのオーバーライド「または」を
- 23. GroovyのはExpandoメタクラス
- 24. オープンソースのプロジェクトはgroovy?
- 25. JavaコードをGroovyに変換する
- 26. Groovyがコンストラクタにコードを追加する
- 27. GroovyとIntelliJ - コードをコンパイルする
- 28. Groovy:パスを\
- 29. HibernateのGroovyエンティティ
- 30. groovyスクリプトのクラスパス
私がやっていることは、ゲームのスクリプトNPCを作ることです。プレイヤーがNPCとやりとりするとき、私は進行機能をトリガーします。 Gparsへのリンクありがとうございました。私はそれを調べます。 –
私はこの章[Actors on here](http://www.gpars.org/guide/guide/5.%20Actors.html)を見ています。俳優が潜在的なトイザランド+あなたがゲームに必要なかもしれないかもしれないどのように拡大するかを確かめないでください? [メーリングリスト](http://xircles.codehaus.org/lists/[email protected])で質問する価値がありますか? –
nice answer tim :) –