質問

私はそれらの間〜10msの一時停止で別のスレッドで実行している2つの依存com.sun.tools.javac.Main.compile()の呼び出しでマルチスレッドビルドを実行していますよ。すべての今(100人ごとビルド程度)、第二javacは最初のjavacからの出力で不正なクラスフォーマット文句ます。

これはLinux上でですが、それはすべてのos'es上で動作する必要があります。私はここに直面してい制約は何ですか?

私は、同時ビルドシステムに取り組んでいるので、彼らは異なるモジュールにしているので、私はjavacsを呼び出してる理由があります。そこの実行順序を保証し、外部同期がある(しかし、私は私のコンパイル()メソッド呼び出しsynchronizedブロック内で実際にはないよ)、と私は、彼らがしているビーイングは約10で、次々に呼び出されることを確実に知ります-20msは平均で一時停止します。すべてのために私が)(コンパイルするために、これらの2つのコールを理解することができます実際にはファイルシステムを共有すべきですか?

編集2: 最初のものが終了するまで、第2のコンパイル()コールを呼び出すスレッドが待機している()ので、順序同期あります。しかし、私は実際の呼び出しをコンパイルするために呼び出すsynchronizedブロック内ではありませんよ。コンパイルは、静的メソッドである、と私は、彼らがそのコンテキストで任意の内部安全出版物の問題を持っていないと仮定しています...(?)

編集3:(コンパイルするコールの同期)が助けにはなりません。どちらのlinuxにだけ同期()を呼び出していないん。可能な場合しかし、私は、Javaレベルで洗い流すバッファに見ていない。

役に立ちましたか?

解決

  

javacの/ javaファイルシステムは何ですか   同時実行の契約?

1はありません。あなたは、スレッドBに別のコンパイラが必要とされているスレッドAでクラスをコンパイルしている場合は、すべきではありません。そのような単純な。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top