2016-04-29 6 views
0

私はMySQLを使用してプレーヤーのデータを取得し保存するゲームの変更を作成しています。 4秒ごとにデータベースからクライアントデータをリフレッシュしますが、ブロックするため、データを取得すると約1秒間フリーズします。MySQLクエリステートメントを実行する簡単な方法Javaで非同期的に

コマンドasyncを実行する簡単な方法はありますか?

+0

データベースクエリには時間がかかりません(10秒間)実際にデータベースへのアクセスの頻度と頻度を再評価する必要があります。キャッシングが機能するかもしれませんか? –

+0

ええと、私は私のエラーを見ていると思います。プライベートなメッセージやステータスの更新など、あらゆる種類のオブジェクトを持っています。各オブジェクトが作成されると、クエリが実行されます。 –

+0

4秒ごとに起きるスレッド(Thread.sleep(4000))を使用して、データベースクエリを実行します。ここでは本当に素敵なチュートリアルをhttp://tutorials.jenkov.comで、autoCommit(false)を設定して頻繁にコミットします。 – GOXR3PLUS

答えて

0
ExecutorService executor = Executors.newSingleThreadExecutor(); 
    executor.submit(() -> { 
     //Your jdbc call here 
     SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      // Here, we can safely update the GUI 
      // because we'll be called from the 
      // event dispatch thread 
      MW.append(foo); 
     } 
    }); 
    }); 
+0

しかし、このようなスレッドはメインスレッドの変数を変更できますか? –

+0

@NicholasHarris、私は私の答えを更新しました。それをチェックしてupvoteと答えをマークしてください。 – suulisin

+0

私はこれを試して、それが動作すれば答えをマークします。ありがとうございました! –

0

まだ実行していない場合は、スレッドを使用してください。 Javaで非同期に実行したいもののrun()メソッドをオーバーライドします。

また、別のリクエストを実行する前に、サーバーがデータベースのデータを返すまで待っていますか?

+0

メインスレッドの変数を変更できないため、スレッドを使用できません。 –

関連する問題