synchronized
Javaでブロックを実装する方法について、私はちょっと混乱しています。
状況の例を次に示します。
public class SlotWheel extends Thread implements ActionListener
{
private int currentTick; // This instance variable is modified in two places
private synchronized void resetCurrentTicks()
{
currentTick = 0;
}
private synchronized void incrementCurrentTicks()
{
++currentTick;
}
public void actionPerformed(ActionEvent e)
{
resetCurrentTicks();
}
}
プログラムの実行中に、ユーザーが を呼び出すボタンをクリックして、 を呼び出す可能性がありactionPerformed
ますresetCurrentTicks
。同時に、実行中のスレッドはincrementCurrentTicks
各ループ反復で呼び出しています。
私はまだ Java とプログラミングに慣れていないので、実装がcurrentTick
破損から保護されているかどうかはわかりません。
私の実装は、実行中のスレッド内でincrementCurrentTicks
呼び出された場合にのみ機能すると感じていますが、別のメソッドから操作しているため、私の実装は間違っています。actionPerformed
currentTick