Java并发编程
null
这个作者很懒,什么都没留下…
展开
-
Java线程中的等待/通知机制
创建了两个线程——WaitThread和NotifyThread,前者检查flag值是否为false,如果符合要求,进行后续操作,否则在lock上等待,后者在睡眠了一段时间后对lock进行通知 package thread; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent....原创 2019-01-13 17:04:39 · 137 阅读 · 0 评论 -
Java线程间通信之管道输入/输出流
管道输入/输出流用于线程之间的数据传输,传输的媒介为内存。 4种具体实现:PipedOutputStream、PipedInputStream、PipedReader、PipedWriter前两种面向字节,后两种面向字符。 创建printThread,它用来接受main线程的输入,任何main线程的输入均通过PipedWriter写入,而printThread在另一端通过PipedReader将内...原创 2019-01-13 17:27:40 · 553 阅读 · 0 评论 -
Java并发编程(四)Java并发编程基础
一、线程 什么是线程 现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,系统就会创建一个Java进程。现代操作系统调度的最小单位是线程。一个进程里可以创建多个线程,这些线程都有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。 通过Java代码来查看一个普通的Java程序包含哪些线程: public class MultiThread{ publi...原创 2019-01-13 18:05:23 · 162 阅读 · 0 评论 -
Java并发编程(一)
并发编程的目的是为了使得程序运行的更快,但是并不是启动更多的线程就能让程序最大程度的并发执行。在进行并发编程时,需要考虑上下文切换、死锁的问题,以及受限于硬件和软件资源限制的问题。 上下文切换: 执行多线程代码时,cpu通过给每个线程分配CPU时间片来实现。时间片是CPU分配给各个线程的时间,时间片非常短,cpu通过不停切换线程执行,来达到多线程执行。上下文切换,会影响多线程的执...原创 2019-01-08 15:55:54 · 126 阅读 · 0 评论 -
Java并发编程(二) Java并发机制的底层实现原理
Java代码在编译后会编程Java字节码,字节码被类加载器加载到JVM里,JVM执行字节吗,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU指令。 一、volatitle volatitle的应用 volatitle是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。当一个线程修改一个共享变量时,另外一个线程能读到这个修改...原创 2019-01-08 18:07:21 · 202 阅读 · 0 评论 -
Java并发编程(五)Java中的锁
一、Lock接口 锁是用来控制多个线程访问共享资源的方式。一般来说,一个锁能防止多个线程同时访问共享资源(有些锁允许多个线程并发访问共享资源,比如读写锁)。Lock接口提供了与synchronized关键字类似的同步功能,只是在使用时需要显示地获取和释放锁。虽然它缺少了隐式获取释放锁的便捷性,但是缺拥有了获取和释放锁的可操作性、可中断性的获取锁及超时获取锁等多种synchronized关键字所...原创 2019-01-14 19:12:19 · 187 阅读 · 0 评论 -
Java并发编程(三)Java内存模型的基础
Java内存模型的基础 1.1 并发编程模型的两个关键问题 :线程之间如何通信及线程之间如何同步 在命令式编程中。线程之间的通信机制有两种:共享内存和消息传递。 同步是指程序中用于控制不同线程间操作发生相对顺序的机制。在共享内存并发模型里,同步是显示进行的。程序员必须指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。...原创 2019-01-09 16:12:43 · 121 阅读 · 0 评论 -
线程池原码流程图
原创 2019-02-02 15:19:04 · 198 阅读 · 0 评论