Thread
klzyf100
这个作者很懒,什么都没留下…
展开
-
JAVA 模拟瞬间高并发
前些日子接到了一个面试电话,面试内容我印象很深,如何模拟一个并发?当时我的回答虽然也可以算是正确的,但自己感觉缺乏实际可以操作的细节,只有一个大概的描述。 当时我的回答是:“线程全部在同一节点wait,然后在某个节点notifyAll。” 面试官:“那你听说过惊群效应吗?” 我:“我没有听过这个名词,但我知道瞬间唤醒所有的线程,会让CPU负载瞬间加大。”转载 2017-09-22 18:04:29 · 1024 阅读 · 0 评论 -
wait(),notify(),notifyAll()的理解与使用
这三个方法由于需要控制对对象的控制权(monitor),所以属于Object而不是属于线程。 wait(),会把持有该对象线程的对象控制权交出去,然后处于等待状态。 notify(),会通知某个正在等待这个对象的控制权的线程可以继续运行。 nofifyAll(),会通知所有等待这个对象控制权的线程继续运行,如果有多个正在等待该对象控制权时,具体唤醒哪个线程,就由操作系统进行调度。 注转载 2017-09-21 17:27:46 · 444 阅读 · 0 评论 -
Thread基础
Java并发(基础知识)—— 创建、运行以及停止一个线程 在计算机世界,当人们谈到并发时,它的意思是一系列的任务在计算机中同时执行。如果计算机有多个处理器或者多核处理器,那么这个同时性是真实发生的;如果计算机只有一个核心处理器那么就只是表面现象。 现代所有的操作系统都允许并发地执行任务。你可以在听音乐和浏览网页新闻的同时阅读邮件,我们说这种并发是进程级别的并发。转载 2017-09-22 10:37:09 · 209 阅读 · 0 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?转载 2017-09-22 11:06:38 · 166 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2017-10-27 17:56:04 · 168 阅读 · 0 评论