[logback-dev] svn commit: r2267 - logback/trunk/logback-core/src/test/java/ch/qos/logback/core/issue

noreply.ceki at qos.ch noreply.ceki at qos.ch
Fri Jun 5 14:24:37 CEST 2009


Author: ceki
Date: Fri Jun  5 14:24:37 2009
New Revision: 2267

Added:
   logback/trunk/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java

Log:
shorter version of LockingInJava

Added: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java	Fri Jun  5 14:24:37 2009
@@ -0,0 +1,70 @@
+package ch.qos.logback.core.issue;
+
+public class LockingInJava implements Runnable {
+
+  static int THREAD_COUNT = 5;
+  static Object LOCK = new Object();
+  static Runnable[] RUNNABLE_ARRAY = new Runnable[THREAD_COUNT];
+  static Thread[] THREAD_ARRAY = new Thread[THREAD_COUNT];
+
+  private int counter = 0;
+
+  public static void main(String args[]) throws InterruptedException {
+    printEnvironmentInfo();
+    execute();
+    printResults();
+  }
+
+  public static void printEnvironmentInfo()  {
+    System.out.println("java.runtime.version = "
+        + System.getProperty("java.runtime.version"));
+    System.out.println("java.vendor          = "
+        + System.getProperty("java.vendor"));
+    System.out.println("java.version         = "
+        + System.getProperty("java.version"));
+    System.out.println("os.name              = "
+        + System.getProperty("os.name"));
+    System.out.println("os.version           = "
+        + System.getProperty("os.version"));
+  }
+
+  public static void execute() throws InterruptedException {
+    for (int i = 0; i < THREAD_COUNT; i++) {
+      RUNNABLE_ARRAY[i] = new LockingInJava();
+      THREAD_ARRAY[i] = new Thread(RUNNABLE_ARRAY[i]);
+    }
+    for(Thread t: THREAD_ARRAY) {
+      t.start();
+    }
+    // let the threads run for a while
+    Thread.sleep(10000);
+    for(Thread t: THREAD_ARRAY) {
+      t.interrupt();
+    }
+    Thread.sleep(100); // wait a moment for termination, to lazy for join ;)
+  }
+
+  public static void printResults() {
+    for (int i = 0; i < RUNNABLE_ARRAY.length; i++) {
+      System.out.println("runnable[" + i + "]: " + RUNNABLE_ARRAY[i]);
+    }
+  }
+
+  public void run() {
+    for (;;) {
+      synchronized (LOCK) {
+        counter++;
+        try {
+          Thread.sleep(10);
+        } catch (InterruptedException ex) {
+          break;
+        }
+      }
+    }
+  }
+
+  public String toString() {
+    return "counter=" + counter;
+  }
+
+}


More information about the logback-dev mailing list