线程池源码也是面试经常被提问到的点,我会将全局源码做一分析,然后告诉你面试考啥,怎么答。 为什么要用线程池? 简洁的答两点就行。 降低系统资源消耗。 提高线程可控性。 如何创建使用线程池? JDK8提供了五种创建线程池的方法: 1.创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 ...
分类:
编程语言 时间:
2019-03-27 11:21:42
阅读次数:
180
第16章 多线程 16.1 线程概述 16.1.1 线程和进程 16.1.2 多线程的优势 16.2 线程的创建和启动 16.2.1 继承Thread类创建线程类 16.2.2 实现Runnable接口创建线程类 16.2.3 使用Callable和Future创建线程 16.2.4 创建线程的三种 ...
分类:
编程语言 时间:
2019-03-20 11:48:37
阅读次数:
200
当线程在系统内运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但 Java 也提供了一些机制来保证线程协调运行。 传统的线程通信 假设现在系统中有两个线程,这两个线程分别代表存款者和取钱者——现在假设系统有一种特殊的要求,系统要求存款者和取钱者不断地重复存款、取钱的动作,而且 ...
分类:
编程语言 时间:
2019-03-17 21:23:24
阅读次数:
156
Java 的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行。 join 线程 Thread 提供了让一个线程等待另一个线程完成的方法—— join() 方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被 join() 方法加入的 j ...
分类:
编程语言 时间:
2019-03-14 22:30:54
阅读次数:
199
在未来某个指定的时间点或者经过一段时间延迟后执行某个事件,这时候就需要用到定时器了。定时器的实现方式有很多种,今天总结最简单的实现方式。java 1.3引入了定时器框架,用于在定时器上下文中控制线程的执行,其由类Timer和TimerTask构成。Timer适用于大规模并发调度定时任务,在内部,该类 ...
分类:
其他好文 时间:
2019-03-06 23:07:43
阅读次数:
224
当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制 线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。 互斥锁为资源引入一个状态:锁定/非锁定 某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁 ...
分类:
其他好文 时间:
2019-03-03 09:32:30
阅读次数:
185
线程池的优点: 重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销 能有效控制线程池的最大并发数,避免大量的线程池之间因互相抢占资源而导致的阻塞现象 能够对线程进行简单的管理并提供定时执行以及指定间隔循环执行等功能 重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销 能有效控制线 ...
分类:
移动开发 时间:
2019-02-28 15:13:30
阅读次数:
232
协程: 协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 需要强调的是: 对比操作系统控制线程的切换,用户在单线程内控制协程的切换 优点如下: 缺点如下: 总结协程特点: Greenlet模块 如果我们在单个线程内有 ...
分类:
其他好文 时间:
2019-02-20 11:17:08
阅读次数:
166
1、Java提供了一些工具方法,可以便捷控制线程的执行: 1.1 join Thread提供了让一个线程等待另一个线程执行完成的方法:join; 当某个程序的执行流中调用其他线程的join方法,该线程将被阻塞,直到被加入的线程执行完成为止; 1.2 sleep sleep可以将当前线程暂停一段时间, ...
分类:
编程语言 时间:
2019-02-16 13:21:30
阅读次数:
205
线程从生到死有几种状态: 创建(new) 就绪start 运行running 阻塞sleep 死亡dead cpu调用线程是从可调度线程池中调用, 当线程阻塞时会移出可调度线程池。 线程是不能直接从阻塞状态直接变成运行状态的, 需要先变成就绪状态,当cpu调用该线程时, 就会变成运行状态。 控制线程 ...
分类:
编程语言 时间:
2019-02-15 22:28:25
阅读次数:
273