Use blocking queue

This commit is contained in:
Jesse Boyd 2016-04-19 05:07:50 +10:00
parent d2128ab045
commit f8e1bb0b71
7 changed files with 20 additions and 17 deletions

View File

@ -1,6 +1,6 @@
name: FastAsyncWorldEdit
main: com.boydti.fawe.bukkit.FaweBukkit
version: 3.3.14
version: 3.3.15
description: Fast Async WorldEdit plugin
authors: [Empire92]
loadbefore: [WorldEdit]

View File

@ -8,6 +8,7 @@ import com.sk89q.worldedit.world.biome.BaseBiome;
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingDeque;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.World;
@ -25,7 +26,7 @@ public abstract class BukkitQueue_0 extends FaweQueue implements Listener {
* Map of chunks in the queue
*/
private ConcurrentHashMap<Long, FaweChunk<Chunk>> blocks = new ConcurrentHashMap<>();
private ArrayDeque<FaweChunk<Chunk>> chunks = new ArrayDeque<>();
private LinkedBlockingDeque<FaweChunk<Chunk>> chunks = new LinkedBlockingDeque<>();
public BukkitQueue_0(String world) {
super(world);
@ -142,7 +143,7 @@ public abstract class BukkitQueue_0 extends FaweQueue implements Listener {
return chunks.size();
}
private ArrayDeque<FaweChunk<Chunk>> toUpdate = new ArrayDeque<>();
private LinkedBlockingDeque<FaweChunk<Chunk>> toUpdate = new LinkedBlockingDeque<>();
public boolean execute(FaweChunk<Chunk> fc) {
if (fc == null) {

View File

@ -30,6 +30,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.LinkedBlockingDeque;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
@ -116,7 +117,7 @@ public class BukkitQueue_1_8 extends BukkitQueue_0 {
}, 1);
}
private ArrayDeque<IntegerPair> loadQueue = new ArrayDeque<>();
private LinkedBlockingDeque<IntegerPair> loadQueue = new LinkedBlockingDeque<>();
@Override
public int getCombinedId4Data(int x, int y, int z) {

View File

@ -28,6 +28,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.LinkedBlockingDeque;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
@ -109,7 +110,7 @@ public class BukkitQueue_1_9 extends BukkitQueue_0 {
}, 1);
}
private ArrayDeque<IntegerPair> loadQueue = new ArrayDeque<>();
private LinkedBlockingDeque<IntegerPair> loadQueue = new LinkedBlockingDeque<>();
@Override
public int getCombinedId4Data(int x, int y, int z) {

View File

@ -3,9 +3,9 @@ package com.boydti.fawe.util;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.FaweChunk;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.LinkedBlockingDeque;
public class SetQueue {
@ -14,8 +14,8 @@ public class SetQueue {
*/
public static final SetQueue IMP = new SetQueue();
public final ArrayDeque<FaweQueue> activeQueues;
public final ArrayDeque<FaweQueue> inactiveQueues;
public final LinkedBlockingDeque<FaweQueue> activeQueues;
public final LinkedBlockingDeque<FaweQueue> inactiveQueues;
/**
* Used to calculate elapsed time in milliseconds and ensure block placement doesn't lag the server
@ -27,12 +27,12 @@ public class SetQueue {
/**
* A queue of tasks that will run when the queue is empty
*/
private final ArrayDeque<Runnable> runnables = new ArrayDeque<>();
private final LinkedBlockingDeque<Runnable> runnables = new LinkedBlockingDeque<>();
public SetQueue() {
activeQueues = new ArrayDeque();
inactiveQueues = new ArrayDeque<>();
activeQueues = new LinkedBlockingDeque();
inactiveQueues = new LinkedBlockingDeque<>();
TaskManager.IMP.repeat(new Runnable() {
@Override
public void run() {
@ -156,7 +156,7 @@ public class SetQueue {
if (this.runnables.size() == 0) {
return false;
}
final ArrayDeque<Runnable> tmp = this.runnables.clone();
final LinkedBlockingDeque<Runnable> tmp = new LinkedBlockingDeque<>(this.runnables);
this.runnables.clear();
for (final Runnable runnable : tmp) {
runnable.run();

View File

@ -3,9 +3,9 @@ package com.boydti.fawe.forge.v0;
import com.boydti.fawe.object.FaweChunk;
import com.boydti.fawe.util.FaweQueue;
import com.sk89q.worldedit.world.biome.BaseBiome;
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingDeque;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.world.Chunk;
import org.spongepowered.api.world.World;
@ -19,7 +19,7 @@ public abstract class SpongeQueue_0 extends FaweQueue {
* Map of chunks in the queue
*/
private final ConcurrentHashMap<Long, FaweChunk<Chunk>> blocks = new ConcurrentHashMap<>();
private ArrayDeque<FaweChunk<Chunk>> chunks = new ArrayDeque<>();
private LinkedBlockingDeque<FaweChunk<Chunk>> chunks = new LinkedBlockingDeque<>();
public SpongeQueue_0(String world) {
super(world);
@ -113,7 +113,7 @@ public abstract class SpongeQueue_0 extends FaweQueue {
return chunks.size();
}
private final ArrayDeque<FaweChunk<Chunk>> toUpdate = new ArrayDeque<>();
private final LinkedBlockingDeque<FaweChunk<Chunk>> toUpdate = new LinkedBlockingDeque<>();
public boolean execute(final FaweChunk<Chunk> fc) {
if (fc == null) {

View File

@ -11,13 +11,13 @@ import com.boydti.fawe.object.PseudoRandom;
import com.boydti.fawe.util.TaskManager;
import com.flowpowered.math.vector.Vector3i;
import java.lang.reflect.Field;
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.LinkedBlockingDeque;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
@ -60,7 +60,7 @@ public class SpongeQueue_1_8 extends SpongeQueue_0 {
}, 1);
}
private ArrayDeque<IntegerPair> loadQueue = new ArrayDeque<>();
private LinkedBlockingDeque<IntegerPair> loadQueue = new LinkedBlockingDeque<>();
@Override
public int getCombinedId4Data(int x, int y, int z) {