updated the threading documentation

master
Stefan Dollase 2016-01-06 20:33:14 +01:00
parent b43af782f9
commit 354b94d1fd
10 changed files with 27 additions and 21 deletions

View File

@ -3,7 +3,7 @@ package amidst.mojangapi.world;
import java.util.List;
import amidst.documentation.CalledByAny;
import amidst.documentation.NotThreadSafe;
import amidst.documentation.ThreadSafe;
import amidst.mojangapi.world.icon.WorldIcon;
import amidst.mojangapi.world.icon.producer.CachedWorldIconProducer;
import amidst.mojangapi.world.icon.producer.WorldIconProducer;
@ -11,12 +11,7 @@ import amidst.mojangapi.world.oracle.BiomeDataOracle;
import amidst.mojangapi.world.oracle.SlimeChunkOracle;
import amidst.mojangapi.world.player.MovablePlayerList;
/**
* The SlimeChunkOracle as well as the WorldIconProducers that are no
* CacheWorldIconProducers cannot be used by multiple threads. The other parts
* of this class can be used multi-threaded.
*/
@NotThreadSafe
@ThreadSafe
public class World {
private final WorldSeed seed;
private final WorldType worldType;

View File

@ -1,6 +1,8 @@
package amidst.mojangapi.world.icon.locationchecker;
import amidst.documentation.ThreadSafe;
@ThreadSafe
public class AllValidLocationChecker implements LocationChecker {
private final LocationChecker[] checkers;

View File

@ -1,12 +1,13 @@
package amidst.mojangapi.world.icon.locationchecker;
import java.util.Collections;
import java.util.List;
import amidst.documentation.Immutable;
import amidst.documentation.ThreadSafe;
import amidst.mojangapi.world.biome.Biome;
import amidst.mojangapi.world.oracle.BiomeDataOracle;
@Immutable
@ThreadSafe
public class BiomeLocationChecker implements LocationChecker {
private final BiomeDataOracle biomeDataOracle;
private final List<Biome> validBiomes;
@ -14,7 +15,7 @@ public class BiomeLocationChecker implements LocationChecker {
public BiomeLocationChecker(BiomeDataOracle biomeDataOracle,
List<Biome> validBiomes) {
this.biomeDataOracle = biomeDataOracle;
this.validBiomes = validBiomes;
this.validBiomes = Collections.unmodifiableList(validBiomes);
}
@Override

View File

@ -1,5 +1,8 @@
package amidst.mojangapi.world.icon.locationchecker;
import amidst.documentation.ThreadSafe;
@ThreadSafe
public interface LocationChecker {
boolean isValidLocation(int x, int y);
}

View File

@ -1,12 +1,13 @@
package amidst.mojangapi.world.icon.locationchecker;
import java.util.Collections;
import java.util.List;
import amidst.documentation.Immutable;
import amidst.documentation.ThreadSafe;
import amidst.mojangapi.world.biome.Biome;
import amidst.mojangapi.world.oracle.BiomeDataOracle;
@Immutable
@ThreadSafe
public class StructureBiomeLocationChecker implements LocationChecker {
private final BiomeDataOracle biomeDataOracle;
private final int size;
@ -16,7 +17,7 @@ public class StructureBiomeLocationChecker implements LocationChecker {
int size, List<Biome> validBiomes) {
this.biomeDataOracle = biomeDataOracle;
this.size = size;
this.validBiomes = validBiomes;
this.validBiomes = Collections.unmodifiableList(validBiomes);
}
@Override

View File

@ -2,7 +2,7 @@ package amidst.mojangapi.world.icon.producer;
import java.util.function.Consumer;
import amidst.documentation.NotThreadSafe;
import amidst.documentation.ThreadSafe;
import amidst.mojangapi.world.coordinates.CoordinatesInWorld;
import amidst.mojangapi.world.coordinates.Resolution;
import amidst.mojangapi.world.icon.WorldIcon;
@ -10,7 +10,7 @@ import amidst.mojangapi.world.icon.locationchecker.LocationChecker;
import amidst.mojangapi.world.icon.type.DefaultWorldIconTypes;
import amidst.mojangapi.world.icon.type.WorldIconTypeProvider;
@NotThreadSafe
@ThreadSafe
public class StructureProducer extends WorldIconProducer {
private final Resolution resolution;
private final int size;

View File

@ -3,19 +3,15 @@ package amidst.mojangapi.world.icon.producer;
import java.util.List;
import java.util.function.Consumer;
import amidst.documentation.AmidstThread;
import amidst.documentation.CalledOnlyBy;
import amidst.documentation.NotThreadSafe;
import amidst.documentation.ThreadSafe;
import amidst.mojangapi.world.coordinates.CoordinatesInWorld;
import amidst.mojangapi.world.icon.WorldIcon;
@NotThreadSafe
@ThreadSafe
public abstract class WorldIconProducer {
@CalledOnlyBy(AmidstThread.FRAGMENT_LOADER)
public abstract void produce(CoordinatesInWorld corner,
Consumer<WorldIcon> consumer);
@CalledOnlyBy(AmidstThread.FRAGMENT_LOADER)
public List<WorldIcon> getAt(CoordinatesInWorld corner) {
WorldIconCollector collector = new WorldIconCollector();
produce(corner, collector);

View File

@ -1,5 +1,8 @@
package amidst.mojangapi.world.icon.type;
import amidst.documentation.Immutable;
@Immutable
public class ImmutableWorldIconTypeProvider implements WorldIconTypeProvider {
private final DefaultWorldIconTypes worldIconType;

View File

@ -1,11 +1,13 @@
package amidst.mojangapi.world.icon.type;
import amidst.documentation.ThreadSafe;
import amidst.logging.Log;
import amidst.mojangapi.minecraftinterface.MinecraftInterfaceException;
import amidst.mojangapi.world.biome.Biome;
import amidst.mojangapi.world.biome.UnknownBiomeIndexException;
import amidst.mojangapi.world.oracle.BiomeDataOracle;
@ThreadSafe
public class TempleWorldIconTypeProvider implements WorldIconTypeProvider {
private final BiomeDataOracle biomeDataOracle;

View File

@ -1,5 +1,8 @@
package amidst.mojangapi.world.icon.type;
import amidst.documentation.ThreadSafe;
@ThreadSafe
public interface WorldIconTypeProvider {
DefaultWorldIconTypes get(int x, int y);
}