JAVA并行程序基础
一、有关线程你必须知道的事
进程与线程
- 在等待面向线程设计的计算机结构中,进程是线程的容器。我们都知道,程序是对于指令、数据及其组织形式的描述,而进程是程序的实体。
- 线程是轻量级的进程,是程序执行的最小单位。(PS:使用多线程去进行并发程序的设计,是因为线程间的调度和切换成本远小于进程)
线程的状态(Thread的State类):
- NEW–刚刚创建的线程,需要调用start()方法来执行线程;
- RUNNABLE–线程处于执行状态;
- BLOCKED–线程遇到synchronized同步块,会暂停执行直到获得请求的锁;
- WAITING–无限制时间的等待;
- TIMED_WAITING–有限制时间的等待;
- TERMINATED–执行完毕,表示结束。
二、线程的基本操作
创建线程
代码示例:start()方法会新建线程并调用run()方法!
Thread t = new Thread();
t.start();
注意以下代码:这段代码也可以编译执行,但不能新建一个线程,而是在当前线程中调用run()方法。(PS:就是作为一个普通方法来调用)
Thread t = new Thread();
t.run();
不能用run()来开启线程,它只会在当前线程中串行执行run()方法。
另外,Thread类有一个非常重要的构造方法:
public Thread(Runnable target)
这个构造方法在start()调用时,新线程会执行Runnable.run()方法。实际上,默认的Thread.run()也是这样子做的。
public class MyThread implements Runnable {
public static void main(String[] args) {
Thread t = new Thread(new MyThread());
t.start();
}
@Override
public