Bladeren bron

修改自实现读写锁的测试程序

luoshi 6 jaren geleden
bovenliggende
commit
c88b2114a5
1 gewijzigde bestanden met toevoegingen van 11 en 4 verwijderingen
  1. 11 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/lock/impl/ReadWriteLock.java

+ 11 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/lock/impl/ReadWriteLock.java

@@ -33,6 +33,9 @@ public class ReadWriteLock {
     }
     }
 
 
     public int unRead() {
     public int unRead() {
+        if (value.get() < 1) {
+            throw new RuntimeException("unread error");
+        }
         return value.updateAndGet(unreadOperator);
         return value.updateAndGet(unreadOperator);
     }
     }
 
 
@@ -95,21 +98,25 @@ public class ReadWriteLock {
         public void run() {
         public void run() {
             for (int i = 0; i < 10000; i++) {
             for (int i = 0; i < 10000; i++) {
                 if (Math.random() < 0.7) {
                 if (Math.random() < 0.7) {
-                    System.out.println("thread " + number + " read:" + lock.read());
+                    System.out.println(
+                            "[thread-" + number + "]   read: " + lock.read() + "[" + System.currentTimeMillis() + "]");
                     try {
                     try {
                         Thread.sleep(100 * ((i % 10) + 1));
                         Thread.sleep(100 * ((i % 10) + 1));
                     } catch (InterruptedException e) {
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                         e.printStackTrace();
                     }
                     }
-                    System.out.println("thread " + number + " unread:" + lock.unRead());
+                    System.out.println("[thread-" + number + "] unread: " + lock.unRead() + "["
+                            + System.currentTimeMillis() + "]");
                 } else {
                 } else {
-                    System.out.println("thread " + number + " write:" + lock.write());
+                    System.out.println(
+                            "[thread-" + number + "]  write:" + lock.write() + "[" + System.currentTimeMillis() + "]");
                     try {
                     try {
                         Thread.sleep(100 * ((i % 10) + 1));
                         Thread.sleep(100 * ((i % 10) + 1));
                     } catch (InterruptedException e) {
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                         e.printStackTrace();
                     }
                     }
-                    System.out.println("thread " + number + " unwrite:" + lock.unWrite());
+                    System.out.println("[thread-" + number + "]unwrite: " + lock.unWrite() + "["
+                            + System.currentTimeMillis() + "]");
                 }
                 }
             }
             }
         }
         }