目录
进程和线程
并发模块的类型:进程和线程
进程:私有空间嘛,彼此隔离。
- 拥有整台计算机的资源
- 多进程之间不共享内存,进程之间通过消息传递进行协作
- 一般来说,进程==程序=应用(但一个应用中可能包含多个进程)
- 进程=虚拟机
线程:程序内部的控制机制(程序的一部分)
- 线程=虚拟CPU
- 程序共享、资源共享,都隶属于进程
- 共享内存,通过创建消息队列在线程之间进行消息传递。
每个线程都有自己的栈。栈中包含所有方法的局部变量。线程只能访问自己的线程栈。线程创建的局部变量其他线程不可见。即使两个线程的代码一样,创建的同名变量仍然在各自得栈中。每个线程有自己版本的局部变量。
线程 | 进程 |
---|---|
轻量级 | 重量级 |
共享内存 | 私有 |
同步机制(存在一定的冲突) | 无 |
结束(kill threads)不安全 | 结束(kill processes)安全 |
一个进程可以有多个线程。
线程的创建和启动、runnable
每个应用至少有一个线程
主线程——可以创建其他的线程。
创建现成的两种方法:
- 从Thread类派生子类
public class HelloThread extends Thread{
@Override
public void run(){
System.out.println("Hello from a thread!");
}
//启动该线程的两个方式
public static void main(String[] args){
HelloThread p=new HelloThread();
p.start();//若重复使用采用这种方式
(new HelloThread()).start();//第二种方法