并发编程关键问题
JDK天生就是多线程的,多线程大大提速了程序运行的速度,但是凡事有利就有弊,并发编程时经常会涉及到线程之间的通信
跟同步
问题,一般也说是可见性、原子性、有序性。
线程通信
线程的通信是指线程之间通过什么机制来交换信息,在编程中常用的通信机制有两个,共享内存跟消息传递。
- 共享内存。
在共享内存的并发模型中线程之间共享程序的公共数据状态,线程之前通过读写内存中的公共内存区域来进行信息的传递,典型的共享内存通信方式就是通过共享对象来进行通信。
- 消息传递,比如在Linux系统中同步机制有管道、信号、消息队列、信号量、套接字这几种方式。
在消息传递的并发模型中,线程之间是没有共享状态的,线程之间必须通过明确的发送消息来显式的进行通信,在Java中的典型通信方式就是
wait()
跟notify()
。
在C/