こんにちは、スレッドを同期するために、型ではなく Double オブジェクトを使用しようとしています。これは宿題です。
概要: このアプリケーションは、銀行システムの簡単な例です。預金者として実行されるスレッドと、引き出し者として実行されるスレッドがあります。預金者は 10 ドルを追加し、引き出し者は 10 ドルを削除するため、アプリケーションの最後には変更されていない 10 の銀行口座が必要です。
各クラス (預金者と引き出し者) で、アカウント オブジェクトでブロック同期を使用して目標を達成することができました。これで私の課題の宿題部分は終了しました。そのための助けは必要ありません。
考えてみると、Account オブジェクト全体をロックするのはやり過ぎだと感じました。重要なトランザクションの唯一の実際の部分は、変数の変更であるため
balance
元々、可変残高は倍でした。私の目標は、変数を Double オブジェクトに変更してから、同期ブロックを account オブジェクト内に移動し、balance 変数を変更するコードの部分だけに移動することでした。
コードを Double に変更すると、エラーは発生しませんが、メモが表示されます。
This element has no attached source and the Javadoc could not be found in the attached Javadoc
また、最後に私の値がすべて間違っているため、コードは機能しません。
質問:
- Balance変数のみをロックできるはずだという私の理論は正しいですか?
- Double の Java.lang コードをコードに認識させるにはどうすればよいですか?
ありがとう
ここにいくつかのコードがあります...
宣言:
private Double balance;
コンストラクタ:
this.balance = new Double(balance);
ロック:
synchronized(balance){
balance = balance + amount;
}