Java: What am I missing here?

keybounce

New Member
Jul 29, 2019
1,925
0
0
What's wrong with this declaration?

private volatile int guard=0;

Eclipse tells me that only "final" is allowed.
Attempting to compile gives me
Code:
/Volumes/UserData/Users/michael/Documents/Games/Minecraft/Modding/git/Finite-Fluids/build/sources/java/com/mcfht/realisticfluids/FluidData.java:329: error: illegal start of expression
            private volatile int guard=0;
            ^
/Volumes/UserData/Users/michael/Documents/Games/Minecraft/Modding/git/Finite-Fluids/build/sources/java/com/mcfht/realisticfluids/FluidData.java:329: error: illegal start of expression
            private volatile int guard=0;
                    ^
/Volumes/UserData/Users/michael/Documents/Games/Minecraft/Modding/git/Finite-Fluids/build/sources/java/com/mcfht/realisticfluids/FluidData.java:329: error: ';' expected
            private volatile int guard=0;
                            ^

This is in a method. I'm trying to use the J5 trick of a synchronized + volatile for thread-safe delayed initialization.

EDIT: If it makes a difference, this is a static inner class. Should that make a difference?
 
Last edited:
A

Aurora Billesbach

Guest
The value of volatile variable can't be cached thread-locally. Means, you can't have a variable private with volatile property.