[Java] Java一个简单的线程任务实例 →→→→→进入此内容的聊天室

来自 , 2020-09-26, 写在 Java, 查看 126 次.
URL http://www.code666.cn/view/4311359e
  1.  package org.ph.javaee.training8;
  2. import java.util.concurrent.locks.ReentrantReadWriteLock;
  3. /**
  4.  * A simple thread task representation
  5.  * @author Pierre-Hugues Charbonneau
  6.  *
  7.  */
  8. public class Task {
  9.        // Object used for FLAT lock
  10.        private final Object sharedObject = new Object();
  11.        // ReentrantReadWriteLock used for WRITE & READ locks
  12.        private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
  13.        /**
  14.         *  Execution pattern #1
  15.         */
  16.        public void executeTask1() {
  17.              // 1. Attempt to acquire a ReentrantReadWriteLock READ lock
  18.              lock.readLock().lock();
  19.              // Wait 2 seconds to simulate some work...
  20.              try { Thread.sleep(2000);}catch (Throwable any) {}
  21.              try {              
  22.                     // 2. Attempt to acquire a Flat lock...
  23.                     synchronized (sharedObject) {}
  24.              }
  25.              // Remove the READ lock
  26.              finally {
  27.                     lock.readLock().unlock();
  28.              }          
  29.              System.out.println("executeTask1() :: Work Done!");
  30.        }
  31.        /**
  32.         *  Execution pattern #2
  33.         */
  34.        public void executeTask2() {
  35.              // 1. Attempt to acquire a Flat lock
  36.              synchronized (sharedObject) {                
  37.                     // Wait 2 seconds to simulate some work...
  38.                     try { Thread.sleep(2000);}catch (Throwable any) {}
  39.                     // 2. Attempt to acquire a WRITE lock                  
  40.                     lock.writeLock().lock();
  41.                     try {
  42.                            // Do nothing
  43.                     }
  44.                     // Remove the WRITE lock
  45.                     finally {
  46.                            lock.writeLock().unlock();
  47.                     }
  48.              }
  49.              System.out.println("executeTask2() :: Work Done!");
  50.        }
  51.        public ReentrantReadWriteLock getReentrantReadWriteLock() {
  52.              return lock;
  53.        }
  54. }

回复 "Java一个简单的线程任务实例"

这儿你可以回复上面这条便签

captcha