进程&线程知识
进程:运行中的应用程序,一套顺序执行的指令,每个进程都有自己独立的内存空间。
线程:并发执行的顺序流,一个进程包括多个顺序执行的流程,这些流程被称为线程。
JVM就是一个进程,在JVM中分出线程,比如main()就是主线程。同时开辟并发执行的序列即多线程。
线程是一个操作系统创建并维护的一个资源,对于单CPU系统来说,某一时刻只可能由一个线程在运行。一个Thread对象就表示一个线程。
线程由三部分组成:
1)CPU分配给线程的时间片
2)线程代码(写在run方法中)
3)线程数据
进程的数据空间独立;线程的数据空间共享,能充分使用CPU资源
线程间通讯容易。共享数据就要加锁、解锁,会降低效率。
线程间共享的数据包括堆和栈;堆空间共享,栈空间独立。
进程的调度:
进程的调度是由OS负责的(分为独占式和共享式)
由OS将时间分为若干时间片,调度系统把每个时间片分给多个进程,线程也是类似的。
JAVA在语言级支持多线程,但负责分配时间的仍然是OS。
线程并发执行是一个宏观概念,微观上是串行的。
对对象的方法加synchronized等价于对当前对象加锁
线程优先级:
值越大优先级越高,被OS选中的可能性就越大。
当一个对象分配给某线程所标记时,其它线程不能访问同步方法,但能访问非同步方法。
每一个对象都有一个互斥锁标记(monitor),这个锁标记是准备分配给线程的,且只能分配给一个线程。
来源:
http://wenku.baidu.com/view/7a36f0db6f1aff00bed51e21.html
浙公网安备 33010602011771号