05 2018 档案

摘要:线程的状态 一个线程会有如下五个状态 1.新建:线程在被创建时会暂时处于这种状态,此时系统为线程分配资源并对其进行初始化 2.就绪:此时线程已经可以运行,只是系统没有为其分配CPU时间。 3.运行:系统为线程分配了CPU时间,线程处于运行状态 4.阻塞:线程由于等待I/O等原因无法继续运行,等待结束 阅读全文
posted @ 2018-05-29 22:24 今日说码 阅读(174) 评论(0) 推荐(0)
摘要:原子性 原子是最小单元、不可再分的意思。原子性是指某个操作在获取CPU时间时,要么就给它足够时间,让这个操作执行完,要么就不执行这个操作,执行时不能出现上下文切换(把CPU时间从一个线程分配到另一个线程)。 Java中对变量的读取和赋值都是原子操作,但long、double类型除外,只有使用vola 阅读全文
posted @ 2018-05-27 08:55 今日说码 阅读(425) 评论(0) 推荐(0)
摘要:显式锁 上篇讲了使用synchronized关键字来定义锁,其实Java除了使用这个关键字外还可以使用Lock接口及其实现的子类来定义锁,ReentrantLock类是Lock接口的一个实现,Reentrant是“重入”的意思,因此这个锁也是支持重入的,这里就不再测试它的重入性了,感兴趣的同学可以自 阅读全文
posted @ 2018-05-23 20:16 今日说码 阅读(263) 评论(0) 推荐(0)
摘要:锁的作用 锁是一种线程同步机制,用于实现互斥,当线程占用一个对象锁的时候,其它线程如果也想使用这个对象锁就需要排队。如果不使用对象锁,不同的线程同时操作一个变量的时候,有可能导致错误。让我们做一个测试: class Entity { public int value = 0; } class Inc 阅读全文
posted @ 2018-05-13 21:16 今日说码 阅读(263) 评论(0) 推荐(0)
摘要:什么是线程池 学习编程的小伙伴们会经常听到“线程池”、“连接池”这类的词语,可是到底“池”是什么意思呢?我讲个故事大家就理解了:在很久很久以前有一家银行,一年之中只有一个客户来办理业务,随着时间的推移,办理业务的人数每年都增加五千。20年之后这家银行办理业务的人次已经到十万。最开始只有一个客户的时候 阅读全文
posted @ 2018-05-07 19:30 今日说码 阅读(6667) 评论(0) 推荐(1)
摘要:进程与线程 1. 进程 进程和代码之间的关系就像音乐和乐谱之间的关系一样,演奏结束的时候音乐就不存在了但乐谱还在;程序执行结束的时候进程就消失了但代码还在,而计算机就是代码的演奏家。 2. 线程 线程可以比喻成演奏过程中的某一种乐器的声音,乐器声音的种类可以很少,但是不能一个都没有——一个进程至少包 阅读全文
posted @ 2018-05-03 19:19 今日说码 阅读(274) 评论(1) 推荐(0)
摘要:并发所带来的好处 1. 并发在某些情况(并不是所有情况)下可以带来性能上的提升 1) 提升对CPU的使用效率 提升多核CPU的利用率:一般来说一台主机上的会有多个CPU核心,我们可以创建多个线程,理论上讲操作系统可以将多个线程分配给不同的CPU去执行,每个CPU执行一个线程,这样就提高了CPU的使用 阅读全文
posted @ 2018-05-02 09:09 今日说码 阅读(438) 评论(0) 推荐(0)
摘要:只有当CPU至少有两个核心的时候才有可能并行,而能不能并发与CPU的核心数无关,单核CPU也可以实现并发。 并行是一种并发的特殊情况,并行要求必须是时间上的同时,而并发只要求逻辑上同时就可以。 举个例子:大学的时候学生都会对老师的讲课质量做一个评价(虽然没什么卵用),老师也会给学生一个成绩。要想使评 阅读全文
posted @ 2018-05-01 21:44 今日说码 阅读(547) 评论(0) 推荐(0)