test_class.declarator: TEST_TIMEOUT_MS = 1000
test_class.modifier: private static final
test_class.original_string: private static final int TEST_TIMEOUT_MS = 1000;
test_class.type: int
test_class.var_name: TEST_TIMEOUT_MS
test_class.declarator: TIMEOUT = Timeout.millis(TEST_TIMEOUT_MS)
test_class.modifier: @ClassRule
      public final static
test_class.original_string: @ClassRule
      public final static Timeout TIMEOUT = Timeout.millis(TEST_TIMEOUT_MS);
test_class.type: Timeout
test_class.var_name: TIMEOUT
test_class.declarator: SUT
test_class.modifier: private
test_class.original_string: private BackgroundThreadPoster SUT;
test_class.type: BackgroundThreadPoster
test_class.var_name: SUT
test_class.file: threadposter/src/test/java/com/techyourchance/threadposter/BackgroundThreadPosterTest.java
test_class.identifier: BackgroundThreadPosterTest
test_case.body: @Test
      public void execute_multipleRunnablesInterdependent_executionSuccessful() throws Exception {
          // Arrange
          final Semaphore semaphore1 = new Semaphore(0);
          final Semaphore semaphore2 = new Semaphore(0);
          Runnable runnable1 = new Runnable() {
              @Override
              public void run() {
                  semaphore1.acquireUninterruptibly();
                  semaphore2.release();
              }
          };
          Runnable runnable2 = new Runnable() {
              @Override
              public void run() {
                  semaphore1.release();
              }
          };
          // Act
          SUT.post(runnable1);
          SUT.post(runnable2);
          // Assert
          semaphore2.acquireUninterruptibly();
      }
test_case.class_method_signature: BackgroundThreadPosterTest.execute_multipleRunnablesInterdependent_executionSuccessful()
test_case.full_signature: @Test public void execute_multipleRunnablesInterdependent_executionSuccessful()
test_case.identifier: execute_multipleRunnablesInterdependent_executionSuccessful
test_case.invocations: acquireUninterruptibly release release post post acquireUninterruptibly
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void execute_multipleRunnablesInterdependent_executionSuccessful()
focal_class.declarator: CORE_THREADS = 3
focal_class.modifier: private static final
focal_class.original_string: private static final int CORE_THREADS = 3;
focal_class.type: int
focal_class.var_name: CORE_THREADS
focal_class.declarator: KEEP_ALIVE_SECONDS = 60L
focal_class.modifier: private static final
focal_class.original_string: private static final long KEEP_ALIVE_SECONDS = 60L;
focal_class.type: long
focal_class.var_name: KEEP_ALIVE_SECONDS
focal_class.declarator: mThreadPoolExecutor
focal_class.modifier: private final
focal_class.original_string: private final ThreadPoolExecutor mThreadPoolExecutor;
focal_class.type: ThreadPoolExecutor
focal_class.var_name: mThreadPoolExecutor
focal_class.file: threadposter/src/main/java/com/techyourchance/threadposter/BackgroundThreadPoster.java
focal_class.identifier: BackgroundThreadPoster
focal_class.class_method_signature: BackgroundThreadPoster.BackgroundThreadPoster()
focal_class.full_signature: public  BackgroundThreadPoster()
focal_class.identifier: BackgroundThreadPoster
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  BackgroundThreadPoster()
focal_class.class_method_signature: BackgroundThreadPoster.post(Runnable runnable)
focal_class.full_signature: public void post(Runnable runnable)
focal_class.identifier: post
focal_class.modifiers: public
focal_class.parameters: (Runnable runnable)
focal_class.return: void
focal_class.signature: void post(Runnable runnable)
focal_class.class_method_signature: BackgroundThreadPoster.getThreadPoolExecutor()
focal_class.full_signature: protected final ThreadPoolExecutor getThreadPoolExecutor()
focal_class.identifier: getThreadPoolExecutor
focal_class.modifiers: protected final
focal_class.parameters: ()
focal_class.return: ThreadPoolExecutor
focal_class.signature: ThreadPoolExecutor getThreadPoolExecutor()
focal_class.class_method_signature: BackgroundThreadPoster.getThreadFactory()
focal_class.full_signature: protected final ThreadFactory getThreadFactory()
focal_class.identifier: getThreadFactory
focal_class.modifiers: protected final
focal_class.parameters: ()
focal_class.return: ThreadFactory
focal_class.signature: ThreadFactory getThreadFactory()
focal_class.class_method_signature: BackgroundThreadPoster.newThreadPoolExecutor()
focal_class.full_signature: protected ThreadPoolExecutor newThreadPoolExecutor()
focal_class.identifier: newThreadPoolExecutor
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: ThreadPoolExecutor
focal_class.signature: ThreadPoolExecutor newThreadPoolExecutor()
focal_method.body: public void post(Runnable runnable) {
          mThreadPoolExecutor.execute(runnable);
      }
focal_method.class_method_signature: BackgroundThreadPoster.post(Runnable runnable)
focal_method.full_signature: public void post(Runnable runnable)
focal_method.identifier: post
focal_method.invocations: execute
focal_method.modifiers: public
focal_method.parameters: (Runnable runnable)
focal_method.return: void
focal_method.signature: void post(Runnable runnable)