文章分类 - 并发编程
线程池ThreadPoolExecutor解析
摘要:线程池的三个优点: 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源, 还会降低系统的稳定性,使用线程池可以进行统一分
阅读全文
synchronized关键字的原理
摘要:一、锁对象 Java中没一个对象都可以作为锁。具体的表现形式为以下三种: 对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类Class对象。 对于同步方法阔,锁是括号里面的对象。 在JVM规范中可以看到Synchronized在JVM里的实现原理,JVM基于进入和退出Monitor对
阅读全文
volatile的定义与实现原理
摘要:一、volatile的定义与实现原理 Java语言规范第3版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了 确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言 提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成vo
阅读全文
Java线程通讯机制
摘要:多线程环境下,线程通讯的方式主要采用两种方式,一种是内存共享型,一种是消息传递型。 内存共享 使用这种方式进行线程通讯,通常会设置一个共享变量,多个线程操作同一个共享变量,来达到多线程之间通讯的目的。这种方式需要考虑多线程之前的同步问题,这个共享变量必须通过加锁或同步的方式进行保护,一般采用sych
阅读全文