Skip to content

Change Volatile #28

@HelgeStenstrom

Description

@HelgeStenstrom

Volatile fields:

private volatile Status status = Status.NOT_SPECIFIED;

private volatile AudioInputStream audioInputStream;

private volatile Object audioLock = new Object();

SonarLint says that you should remove volatile from these fields.
See https://wiki.sei.cmu.edu/confluence/display/java/CON50-J.+Do+not+assume+that+declaring+a+reference+volatile+guarantees+safe+publication+of+the+members+of+the+referenced+object

IntelliJ complains about non-atomic operation on volatile field, probably as a consequence.

audioInputStream = AudioSystem.getAudioInputStream(targetFormat, audioInputStream);

IntelliJ inspection also complains about Synchronization on a non-final field 'audioLock' in three places, the first being

so you should change audioLock from volatile to final.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions