私は自分のチームが働いているJavaプロジェクトに取り組んでいます。要約すると、「保存」クラスをインスタンス化して呼び出すメソッドを持つメインクラスがあります。この「保存」クラスは、いくつかのコンストラクターといくつかの表示および非表示メソッドを使用してファイルをサーバーに保存します。このクラスはCPUに負荷がかかり、時間がかかるため、メインアプリケーションがプログレスバーダイアログウィンドウを表示して、ユーザーに保存のステータスを知らせることができません。彼らは、メインアプリケーションの残りの部分がユーザーに情報を表示するという小さなタスクを実行できるように、独自のスレッドを生成するように「保存」クラスを変更するように私に依頼しました。
その一般的な概念は次のとおりです。
class MainApp{
...
private void doSave()
{
Save s = new Save();
StatusWindow sw = new StatusWindow();
if save_this
s.saveThis(sw);
if save_that
s.saveThat(sw);
...
}
...
}
class Save{
...
public void saveThis(StatusWindow s)
{
//alot of code
s.update;
}
public void saveThat(StatusWindow s)
{
//alot of code
s.update;
}
... // some non-visible methods, even more code
}
私は現在Javaのスレッドの初心者ですが、スレッドがどのように機能するかについての基本的な理解があります。私が理解していることから、Runnableを実装するクラスは、新しいスレッドとしてインスタンス化されると、run()メソッドが実行されます。問題は、ファイルの種類ごとに保存の種類ごとに異なるメソッドがあるため、これらのメソッドをrun()メソッドに実装するにはどうすればよいですか?run()メソッドは、クラスが新しいスレッドでインスタンス化され、.start()が呼び出されたときに実行される唯一のメソッドですか?
この問題の良い解決策は何でしょうか?Runnableを実装するには、「Save」クラスを再設計する必要がありますか?
詳細が必要な場合はお知らせください。洞察をありがとう!
更新:助けてくれてありがとう!これらのソリューションは、将来的に役立ちます。