多线程
文章平均质量分 59
...
baidu_39306983
这个作者很懒,什么都没留下…
展开
-
线程池和Lambda表达式
背景 当要执行新的线程任务时,我们就去创造一个线程,这样使用起来很方便 但存在的问题是,当频繁创建了很多线程,每个线程执行完就销毁了,开销很大,因为创建和销毁线程需要时间 使用一种方法线程池,使线程得以复用:线程执行完任务后,不销毁,可以继续执行下一个任务。 线程池 线程池中存放多个新建的线程,需要执行线程任务时,就往线程池中添加线程任务。 如果加入的线程任务数目超过线程池并发的线程数时,剩余的线程任务会先进入等待队列,直到线程池有线程空闲,再来执行这些剩余的任务。 使用 使用线程.原创 2021-02-04 15:00:03 · 96 阅读 · 0 评论 -
为什么wait()和notify()必须放到一个loop:synchronized中!!!
依靠对象 (wait()要知道等下被谁唤醒,notify()要知道去唤醒谁;所以wait()和notify()需要依靠同一个对象来调用) 需要监视器 这就需要一个监视器: 包含一个对象锁、一个等待队列、一个同步队列 对象锁:同一时间只能被一个线程获得,保证只有一个线程中的同步代码块被执行 等待队列:使用wait() 方法后被阻塞的线程会放到此队列中,这些线程待唤醒 同步队列:存放竞争同步资源的线程 过程解释 notify() 的过程其实就是:将等待队列的某个线程调到同步队列中的过程 wait原创 2021-02-01 17:04:07 · 172 阅读 · 0 评论 -
线程状态
1、新建状态 new Thread 或 new thread的子类 2、运行状态RUNNABLE 已获得cpu使用权,正在运行 3、阻塞状态BLOCKED 具有cpu执行资格,等待cpu空闲时间执行 4、休眠状态TIMED_WAITING 放弃cpu执行资格,就算cpu空闲也不执行 5、无限等待状态WAITING 只能被Object.notify()唤醒 6、死亡状态TEMINATED run() 方法执行完成 使用了stop() 方法 出现了异常 ...原创 2021-01-31 16:44:05 · 105 阅读 · 0 评论 -
开启新线程的方法and解决线程安全问题的方法
并发与并行 并发:两个或多个事件(线程)在同一时间段内发生(一个Cpu交替执行) 并行:两个或多个事件(线程)在同一时刻发生 线程与进程 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。 进入到内存的程序就是进程 线程:能独立运行的基本单位,也是独立调度和分派的基本单位 进程和线程的区别 地址空间:进程是资源分配的基本单位,线.原创 2021-01-31 16:43:05 · 1511 阅读 · 4 评论