摘要:
在什么情况下使用线程池? (1).单个任务处理的时间比较短 (2).将需处理的任务的数量大 使用线程池的好处: (1)、减少在创建和销毁线程上所花的时间以及系统资源的开销 (2)、如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。 1、FixedThreadPool 每 阅读全文
摘要:
1、创建一个Fork/Join池 ForkJoinPool 逻辑 实现一个任务来修改产品列表的价格。任务最初是负责更新一个队列中的所有元素。你将会使用10作为参考大小,如果一个任务必须更新超过10个元素,这些元素将被划分成两个部分,并创建两个任务来更新每个部分中的产品的价格。 2.加入任务的结果 F 阅读全文
摘要:
1、newCachedThreadPool newCachedThreadPool() 方法创建一个缓存线程池。当需要执行新的任务会创建新的线程,如果它们已经完成运行任务,变成可用状态,会重新使用这些线程。 缓存线程池的优点:线程重复利用,它减少线程创建的时间。 缓存线程池的缺点:为新任务不断创建线 阅读全文
摘要:
1、ConcurrentLinkedDeque 非阻塞并发双端链表 getFirst()和getLast():这些方法将分别返回列表的第一个和最后一个元素。它们不会从列表删除返回的元素。如果列表为空,这些方法将抛出NoSuchElementExcpetion异常。 peek()、peekFirst( 阅读全文
摘要:
1、Semaphore 信号量 Semaphore(信号量)是一个控制访问多个共享资源的计数器。 当一个线程想要访问某个共享资源,首先,它必须获得semaphore。如果semaphore的内部计数器的值大于0,那么semaphore减少计数器的值并允许访问共享的资源。计数器的值大于0表示,有可以自 阅读全文
摘要:
1、ReentrantLock (1)、lock()、unlock()一对方法与synchronized 意思一样,unlock()方法 要在finally里面释放。 (2)、tryLock()方法:如果一 个线程调用这个方法不能获取Lock接口的控制权时,将会立即返回并且不会使这个线程进入睡眠。这 阅读全文
摘要:
1、Thread 类的join() 方法 当前线程调用某个线程的这个方法时,它会暂停当前线程,直到被调用线程执行完成。 例子: 输出为: run: Begin Main Begin DataSourcesLoader End DataSourcesLoader End Main BUILD SUCC 阅读全文