当前位置: 首页>>代码示例>>Java>>正文


Java Lock.newCondition方法代码示例

本文整理汇总了Java中java.util.concurrent.locks.Lock.newCondition方法的典型用法代码示例。如果您正苦于以下问题:Java Lock.newCondition方法的具体用法?Java Lock.newCondition怎么用?Java Lock.newCondition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.util.concurrent.locks.Lock的用法示例。


在下文中一共展示了Lock.newCondition方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: AppContext

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
/**
 * Constructor for AppContext.  This method is <i>not</i> public,
 * nor should it ever be used as such.  The proper way to construct
 * an AppContext is through the use of SunToolkit.createNewAppContext.
 * A ThreadGroup is created for the new AppContext, a Thread is
 * created within that ThreadGroup, and that Thread calls
 * SunToolkit.createNewAppContext before calling anything else.
 * That creates both the new AppContext and its EventQueue.
 *
 * @param   threadGroup     The ThreadGroup for the new AppContext
 * @see     sun.awt.SunToolkit
 * @since   1.2
 */
AppContext(ThreadGroup threadGroup) {
    numAppContexts.incrementAndGet();

    this.threadGroup = threadGroup;
    threadGroup2appContext.put(threadGroup, this);

    this.contextClassLoader =
         AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
                public ClassLoader run() {
                    return Thread.currentThread().getContextClassLoader();
                }
            });

    // Initialize push/pop lock and its condition to be used by all the
    // EventQueues within this AppContext
    Lock eventQueuePushPopLock = new ReentrantLock();
    put(EVENT_QUEUE_LOCK_KEY, eventQueuePushPopLock);
    Condition eventQueuePushPopCond = eventQueuePushPopLock.newCondition();
    put(EVENT_QUEUE_COND_KEY, eventQueuePushPopCond);
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:34,代码来源:AppContext.java

示例2: startThrift

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
private void startThrift() throws Exception {
  final Lock startLock = new ReentrantLock();
  final Condition startCondition = startLock.newCondition();
  final AtomicBoolean startedServing = new AtomicBoolean();
  try (ServerSocket socket = new ServerSocket(0)) {
    thriftPort = socket.getLocalPort();
  }
  conf.setVar(ConfVars.METASTOREURIS, getThriftConnectionUri());
  final HiveConf hiveConf = new HiveConf(conf, HiveMetaStoreClient.class);
  thriftServer.execute(new Runnable() {
    @Override
    public void run() {
      try {
        HadoopThriftAuthBridge bridge = new HadoopThriftAuthBridge23();
        HiveMetaStore.startMetaStore(thriftPort, bridge, hiveConf, startLock, startCondition, startedServing);
      } catch (Throwable e) {
        LOG.error("Unable to start a Thrift server for Hive Metastore", e);
      }
    }
  });
  int i = 0;
  while (i++ < 3) {
    startLock.lock();
    try {
      if (startCondition.await(1, TimeUnit.MINUTES)) {
        break;
      }
    } finally {
      startLock.unlock();
    }
    if (i == 3) {
      throw new RuntimeException("Maximum number of tries reached whilst waiting for Thrift server to be ready");
    }
  }
}
 
开发者ID:HotelsDotCom,项目名称:beeju,代码行数:36,代码来源:ThriftHiveMetaStoreJUnitRule.java

示例3: verifyNamespacedListIsBackedUpIntoProperFiles_WhenNamespacedListIsReloaded

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
private void verifyNamespacedListIsBackedUpIntoProperFiles_WhenNamespacedListIsReloaded() throws Exception {
    deleteBackups();
    contextA.setNamespacedLists(Arrays.asList(new TestNamespacedList("integrationTest", "1", "2")));

    Lock listUpdateLock = new ReentrantLock();
    Condition updated = listUpdateLock.newCondition();
    newBatchAppliedListener.setCallback(event -> {
        log.info("Namespaced List updated in data store");
        if (event.getData().getNamespacedLists().containsKey("integrationTest")) {
            listUpdateLock.lock();
            try {
                updated.signalAll();
            } finally {
                listUpdateLock.unlock();
            }
        }
    });
    testHelperA.getDataStore().putNamespacedList();
    listUpdateLock.lock();
    try {
        updated.await(1, TimeUnit.SECONDS);
    } finally {
        listUpdateLock.unlock();
    }
    log.info("Unlocked test. Keep going");
    Thread.sleep(1000); // TODO: find better way to wait till all backup files are written

    Assert.assertTrue("Namespaced list backup is absent", Files.exists(Paths.get(currentPath + File.separator + "namespacedlists.json")));
}
 
开发者ID:Comcast,项目名称:redirector,代码行数:30,代码来源:BackupsIntegrationTest.java

示例4: backupsAreUpdatedAfterDataSourceComesUp

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
private void backupsAreUpdatedAfterDataSourceComesUp() throws Exception {
    TestContext context = contextBuilder.withNamespacedList(NAMESPACED_LIST, "new value").build();
    IntegrationTestHelper testHelper = prepareTestHelperForInitRedirectorModel(context);
    Lock lock = new ReentrantLock();
    Condition listUpdated = lock.newCondition();

    newBatchAppliedListener.setCallback(event -> {
        log.info("Namespaced Lists updated after zookeeper came up");
        lock.lock();
        try {
            listUpdated.signalAll();
        } finally {
            lock.unlock();
        }
    });

    dataStoreSupport.startZookeeper();
    testHelper.getDataStore().setupEnvForContext();
    lock.lock();
    try {
        listUpdated.await(3, TimeUnit.SECONDS);
    } finally {
        lock.unlock();
    }
    log.info("Unlocked test. Keep going");
    NamespacedListsBatch namespacedListsFromBackup = testHelper.getBackups().getNamespacedLists();
    Assert.assertTrue(namespacedListsFromBackup.getNamespacedLists().get(NAMESPACED_LIST).contains("new value"));
    Assert.assertFalse(namespacedListsFromBackup.getNamespacedLists().get(NAMESPACED_LIST).contains(NAMESPACED_LIST_VALUE));
}
 
开发者ID:Comcast,项目名称:redirector,代码行数:30,代码来源:NamespacedListsIntegrationTest.java

示例5: testAwaitUninterruptibly

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
public void testAwaitUninterruptibly(boolean fair) {
    final Lock lock = new ReentrantReadWriteLock(fair).writeLock();
    final Condition condition = lock.newCondition();
    final CountDownLatch pleaseInterrupt = new CountDownLatch(2);

    Thread t1 = newStartedThread(new CheckedRunnable() {
        public void realRun() {
            // Interrupt before awaitUninterruptibly
            lock.lock();
            pleaseInterrupt.countDown();
            Thread.currentThread().interrupt();
            condition.awaitUninterruptibly();
            assertTrue(Thread.interrupted());
            lock.unlock();
        }});

    Thread t2 = newStartedThread(new CheckedRunnable() {
        public void realRun() {
            // Interrupt during awaitUninterruptibly
            lock.lock();
            pleaseInterrupt.countDown();
            condition.awaitUninterruptibly();
            assertTrue(Thread.interrupted());
            lock.unlock();
        }});

    await(pleaseInterrupt);
    t2.interrupt();
    lock.lock();
    lock.unlock();
    assertThreadBlocks(t1, Thread.State.WAITING);
    assertThreadBlocks(t2, Thread.State.WAITING);

    lock.lock();
    condition.signalAll();
    lock.unlock();

    awaitTermination(t1);
    awaitTermination(t2);
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:41,代码来源:ReentrantReadWriteLockTest.java

示例6: PoolEntryFuture

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
PoolEntryFuture(final Lock lock, final FutureCallback<T> callback) {
    super();
    this.lock = lock;
    this.condition = lock.newCondition();
    this.callback = callback;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:7,代码来源:PoolEntryFuture.java

示例7: backupsAreUpdatedAfterNamespacedListIsChangedInDataStore

import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
private void backupsAreUpdatedAfterNamespacedListIsChangedInDataStore() throws Exception {
    TestContext context = contextBuilder.withNamespacedList("NewList", "value1", "value2").build();
    IntegrationTestHelper testHelper = prepareTestHelperForUpdateRedirectorModel(context);
    Lock lock = new ReentrantLock();
    Condition listUpdated = lock.newCondition();

    newBatchAppliedListener.setCallback(unchecked(event -> {
        log.info("New namespaced list is applied: {}", event.getData().getNamespacedLists());
        if (event.getData() != null && event.getData().getNamespacedLists() != null) {
            if (event.getData().getNamespacedLists().containsKey("NewList")) {
                log.info("Event for update of new namespaced list happened. Continue processing");
            } else {
                log.info("Skip this event");
                return;
            }
        }

        lock.lock();
        try {
            listUpdated.signalAll();
        } finally {
            lock.unlock();
        }
    }));

    lock.lock();

    try {
        testHelper.getDataStore().putNamespacedList();
        if (listUpdated.await(1, TimeUnit.SECONDS)) {
            log.info("Namespaced list is applied. Going to verification");
        } else {
            log.info("Timeout exceed. Unlocking test");
        }
    } finally {
        lock.unlock();
    }

    NamespacedListsBatch namespacedListsFromBackup = testHelper.getBackups().getNamespacedLists();
    log.info("Got namespaced list from backup {}", namespacedListsFromBackup.getNamespacedLists());
    Assert.assertTrue(namespacedListsFromBackup.getNamespacedLists().get("NewList").contains("value1"));
    Assert.assertTrue(namespacedListsFromBackup.getNamespacedLists().get("NewList").contains("value2"));
}
 
开发者ID:Comcast,项目名称:redirector,代码行数:44,代码来源:NamespacedListsIntegrationTest.java


注:本文中的java.util.concurrent.locks.Lock.newCondition方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。