`

Junit Vs main on "java.util.concurrent.Executors"

阅读更多
Same code with different results.


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.junit.Test;

public class JUnitTestVSMain {

	static class MyBlockedRunnale implements Runnable{
		@Override
		public void run() {
			try {
				for(int i = 1; i <= 5; i++){
					System.out.println("Sleeping " + i + "s.");
					Thread.sleep(1000);
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		
	}
	
	static void doSomething(){
		ExecutorService cacheService    = Executors.newCachedThreadPool();
		cacheService.execute(new MyBlockedRunnale());
		cacheService.shutdown();
		System.out.println("shut down...");
	}
	
	/**
	 * Result:
	 * =======================================
	 * Sleeping 1s.
	 * shut down...
	 * Sleeping 2s.
	 * Sleeping 3s.
	 * Sleeping 4s.
	 * Sleeping 5s.
	 */
	public static void main(String[] args){
		doSomething();
	}
	
	
	/**
	 * Result:
	 * =======================================
	 * shut down...
	 * Sleeping 1s.
	 */
	@Test
	public void testShutdown(){
		doSomething();
	}
}






分享到:
评论

相关推荐

    javaalert_JAVA源码_

    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); executor.scheduleAtFixedRate(new ReminderTask(), 1, 1, TimeUnit.MINUTES); } } ``` 3. **线程安全**:当多个用户或多...

    JUNIT多线程测试

    executor = Executors.newFixedThreadPool(2); // 创建线程池 } @Override protected void after() { executor.shutdown(); // 测试结束后关闭线程池 } public ExecutorService getExecutor() { return ...

    Java 并发包下源码阅读与自己的测试

    Java并发包,全称为`java.util.concurrent`,是Java编程语言中处理多线程和并发操作的核心工具包。这个包提供了高效、线程安全的数据结构,以及用于协调多个线程执行任务的工具类,极大地简化了并发编程。下面将详细...

    Consumer_Producer_Exercise

    在Java中,我们通常使用`java.util.concurrent`包中的`BlockingQueue`来实现这个模型,因为它提供了线程安全的数据交换机制,可以避免竞态条件和死锁的发生。 首先,我们需要了解`BlockingQueue`接口。它是Java并...

    Java-Concurrency-in-Practice.rar

    - **java.util.concurrent.atomic包**:包含一系列原子类,如AtomicInteger、AtomicReference等,它们提供了无锁编程的可能性。 - **Lock接口与ReentrantLock**:对比synchronized,讲解了显式锁的优势和用法。 -...

    互联网高频Java后端面试题20道(适合1~3年)V1.0.22.docx

    在实际开发中,应尽量遵循避免死锁的原则,设计合理的锁获取顺序,或者使用高级并发工具,如java.util.concurrent包中的ReentrantLock,它提供了更多的控制和避免死锁的能力。 问题 8:解释一下Java中的 volatile ...

Global site tag (gtag.js) - Google Analytics