diff --git a/configuration/spotbugs-filters.xml b/configuration/spotbugs-filters.xml
index 9f36b9481..89db6d5b6 100644
--- a/configuration/spotbugs-filters.xml
+++ b/configuration/spotbugs-filters.xml
@@ -87,4 +87,10 @@
+
+
+
+
+
+
diff --git a/tinylog-impl/src/main/java/org/tinylog/core/WritingThread.java b/tinylog-impl/src/main/java/org/tinylog/core/WritingThread.java
index 6e82ba5de..b4ebb5aba 100644
--- a/tinylog-impl/src/main/java/org/tinylog/core/WritingThread.java
+++ b/tinylog-impl/src/main/java/org/tinylog/core/WritingThread.java
@@ -28,8 +28,6 @@
public final class WritingThread extends Thread {
private static final String THREAD_NAME = "tinylog-WritingThread";
- private static final long MILLISECONDS_TO_SLEEP = 10L;
-
private final Object mutex;
private final Collection writers;
private List tasks;
@@ -67,12 +65,6 @@ public void run() {
flush(writers);
writers.clear();
-
- try {
- sleep(MILLISECONDS_TO_SLEEP);
- } catch (InterruptedException ex) {
- // Ignore and continue
- }
}
}
@@ -88,6 +80,7 @@ public void add(final Writer writer, final LogEntry logEntry) {
Task task = new Task(writer, logEntry);
synchronized (mutex) {
tasks.add(task);
+ mutex.notify();
}
}
@@ -102,9 +95,8 @@ public void add(final Writer writer, final LogEntry logEntry) {
public void shutdown() {
synchronized (mutex) {
tasks.add(Task.POISON);
+ mutex.notify();
}
-
- interrupt();
}
/**
@@ -114,13 +106,17 @@ public void shutdown() {
*/
private List receiveTasks() {
synchronized (mutex) {
- if (tasks.isEmpty()) {
- return Collections.emptyList();
- } else {
- List currentTasks = tasks;
- tasks = new ArrayList();
- return currentTasks;
+ while (tasks.isEmpty()) {
+ try {
+ mutex.wait();
+ } catch (InterruptedException ex) {
+ return Collections.emptyList();
+ }
}
+
+ List currentTasks = tasks;
+ tasks = new ArrayList();
+ return currentTasks;
}
}