从线程和进程的角度来说,进程是资源分配的最小单位,线程是独立调度的最小单位。
同一个进程中的多个线程之间可以并发执行,他们共享进程资源。
线程不拥有资源,线程可以访问隶属进程的资源,进程有自己的独立空间地址,线程没有自己的独立空间地址,但是线程有自己的堆栈和局部变量。
如何理解线程不拥有独立的地址空间但是线程却可以有私有的栈、程序计数器、本地方法区。
我的一直的理解是,线程的栈、程序计数器、本地方法区也是存放在进程的地址空间上,只是这些栈、程序计数器、本地方法区都只能有某个特定的线程去访问、其他的线程访问不到。
这么理解是对的吗?
你的理解是对的,稍微补充一点,线程的栈,其他线程也是可以访问的,只是常规上访问不到,如果你使用C/C++语言的话,数组越界后,很容易就访问到其他线程的栈了,以致有可能导致其他线程的异常。 这一点也从侧面证明一个进程内的多个线程是共享内存的。