进程与线程
进程就是程序的一次执行,而线程可以理解为进程中的执行的一段程序片段。每个进程都有独立的代码和数据空间(进程上下文);而线程可以看成是轻量级的进程。一般来讲(不使用特殊技术),同一进程所产生的线程共享同一块内存空间。
同一进程中的两段代码是不可能同时执行的,除非引入线程(实际也非同时执行,但表面上有同时执行的效果)。
多线程情况下,多个线程都获取CPU的执行权,CPU执行谁,就执行谁,在某个时间点,只有一个程序在运行(多核除外)CPU在做着快速的切换,已达到看上去是同事运行的效果。
进程:是一个正在运行的程序,每一个进程都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;
线程:就是进程中执行的一个控制单元,线程控制着进程的执行。
一个进程至少有一个线程,JVM 启动的时候会有一个进程java.exe。该进程中至少一个线程负责java程序的执行,而且这个线程运行的代码在在main方法中,该线程为主线程。
多线程创建
创建多线程,一般有两种方式,通过java.lang.Thread类或者通过Runnable接口。
继承Thread类
1、继承Thread类,并重新Thread类中的run方法
2、创建并启动一个线程,调用start方法(启动线程、调用run方法)
public class MyThread extends Thread{
@Override
public void run() {
super.run();
for (int i = 0; i < 5; i++) {
System.out.println("线程:"+currentThread().getName()+" 执行 "+ i);
}
}
/**
* @param args
*/
public static void main(String[] args) {
MyThread mt = new MyThread();
mt.start(); //开启线程。并执行该线程的run方法
//mt.run(); //仅仅对象调用放到,而创建线程了,并没有运行
}
}
为什么要覆盖run方法ÿ