同期化が少し粗い互いにブロックしている。私の現在のプロジェクトはAndroid上ですが、もっと一般的なJavaのケースにも興味があります。同期メソッドがブロックされているかどうかをチェックする方法(Android + Java)
おかげで、あなたはUIスレッドからのすべての使用を削除する場合
同期化が少し粗い互いにブロックしている。私の現在のプロジェクトはAndroid上ですが、もっと一般的なJavaのケースにも興味があります。同期メソッドがブロックされているかどうかをチェックする方法(Android + Java)
おかげで、あなたはUIスレッドからのすべての使用を削除する場合
はどのようにあなたのUIが振る舞うのでしょうか?突然スムーズで応答性が高い場合は、他のスレッドがロックを解除するのを待っている間に実際にブロックされていることがわかります。
しかし、それでも差異がなく、それでもまだまだ問題がある場合は、バックグラウンドスレッドがビジー状態である、つまりCPU時間のUIスレッドが枯渇しているという問題があることがわかります。
上記のように、私は本当に私のアプリがblcokingているかどうかを知りたいと思います。私のデータベースをsychronizingすることなく、SQLiteのAndroid実装に関する問題をかなり確実に解決することができますので、しばらくお待ちください。それはまた私が愛しているJavaにC++から来ていることを私に思い出させます、私はこのために非常に便利である#defineを見逃します。 – aronp
私はあなたのUIスレッドと同期したメソッドでデータベースの処理をしていないことを本当に願っています!フラッシュベースのI/Oがどのくらい遅いかを覚えておいてください。あなたは実際に何が起こっているかについてのもう少し詳細をあなたの質問に記入してください。 –
私は本当にこれが私の特定の問題であることを望んでいませんでしたが、一般的には、シンクロされたメソッドがブロックしているときにどのようにアクセスできるのでしょうか。私の場合、キャッシュとデータベースはクラス内にラップされていますが、UIはキャッシュと他のスレッドをデータベースから読み込んでキャッシュに入れるだけなので、これらのputがUIと衝突しているかどうかを知りたかった私は同期をもっとうまくできるとはかなり確信していますが、私はそれが存在しない問題を修正しているかどうかを手前で知りたいと思います。 – aronp