0

GWT/Gears で WorkerPool (Javascript Threads) クラスと機能を使用するには、Java と Javascript の両方でコードを記述する必要がありますか? WorkerPool - Getting Startedと GWT-Gears-1.1 ダウンロード パッケージ内のサンプル WorkerPool アプリケーションを調べると、それが必要なようです。Java コードは Javascript の同期の性質を示すために使用され、非同期呼び出しには Javascript の同じアルゴリズムが使用されているようです。

何か不足していますか?GWT は Javascript コードを書かなくて済むように作られたのではないですか? WorkerThread コードを Java で記述し、コンパイラに Javascript にコンパイルさせることができないのはなぜですか?

その URL からの関連する Java コードは次のとおりです。

 public void syncWorker(String message) {
// Busy wait for 5 seconds
long end = System.currentTimeMillis() + 5000;
while (true) {
  int busyCounter = 1000;
  String busyVar;
  while (busyCounter-- > 0) {
    busyVar = "garbage" + busyCounter;
  }
  long now = System.currentTimeMillis();
  if (now > end) {
    break;
  }
}
logMessage("Approved: " + message);
}

関連する worker.js の Javascript コードは次のとおりです (Javascript で記述されたアルゴリズムと同じであることに注意してください)。

function doWork(message) {
// Busy wait for 5 seconds
var start = new Date();
while (true) {
  var busyCounter = 10000;
  var busyVar;
  while (busyCounter-- > 0) {
    busyVar = "garbage" + busyCounter;
  }
  var now = new Date();
  if (now.getTime() - start.getTime() > 5000) {
    break;
  }
 }

 return "Approved: " + message;
 };

Java での呼び出しは次のとおりです。

wp = Factory.getInstance().createWorkerPool();
wp.setMessageHandler(GearsWorkerPoolTutorial.this);
workerId = wp.createWorkerFromUrl("worker.js");

GWT と Gears の経験がある人は、これについていくらか光を当てることができますか?

ありがとう!

編集:

このhttp://markmail.org/message/gxipzth2jheccpha#query:+page:1+mid:sabv4llpymbavt7t+state:resultsによると、私の疑いは正しいようです。この制限が存在する理由を理解しているかどうかはわかりません。この問題に関する洞察をぜひお読みください。

編集2:

これもそれを確認しているようです:http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/658f6665e5b09bed

4

1 に答える 1

1

私は GWT に Gears を使用したことはありませんが、あなたの証拠を読んだ後、WorkerPool クラスは JavaScript ファイルのみを実行でき、Java でコンパイルされた JavaScript ファイルは実行できないというあなたの発言は正しいと思います。これは GWT-Gears v1.1.1 WorkerPool API からの引用です。

WorkerPool モジュールを使用すると、Web アプリケーションは、メイン ページのスクリプトの実行をブロックすることなく、バックグラウンドで JavaScript コードを実行できます。現在、このクラスは生の JavaScript コードからのみワーカー スレッドを作成できます。つまり、現在、ユーザー コードは Java コードからワーカー ボディを作成できません。

WorkerPool クラスはスレッドと通信を管理しますが、これは簡単な作業ではありません。

于 2009-02-06T00:08:31.587 に答える