-
-
Notifications
You must be signed in to change notification settings - Fork 35
Description
Volatile fields:
java-stream-player/src/main/java/com/goxr3plus/streamplayer/stream/StreamPlayer.java
Line 72 in a4aaa94
private volatile Status status = Status.NOT_SPECIFIED; |
java-stream-player/src/main/java/com/goxr3plus/streamplayer/stream/StreamPlayer.java
Line 78 in a4aaa94
private volatile AudioInputStream audioInputStream; |
java-stream-player/src/main/java/com/goxr3plus/streamplayer/stream/StreamPlayer.java
Line 111 in a4aaa94
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.
java-stream-player/src/main/java/com/goxr3plus/streamplayer/stream/StreamPlayer.java
Line 483 in a4aaa94
audioInputStream = AudioSystem.getAudioInputStream(targetFormat, audioInputStream); |
IntelliJ inspection also complains about Synchronization on a non-final field 'audioLock' in three places, the first being
java-stream-player/src/main/java/com/goxr3plus/streamplayer/stream/StreamPlayer.java
Line 202 in a4aaa94
synchronized (audioLock) { |
so you should change audioLock from volatile to final.