进程:
一个应用程序打开后,会被加载到内存中,而计算机会开辟内存空间,而一个内存空间就是一个进程,进程是一个个独立的单元,在内存中会不影响。
线程:
一个应用程序是由很多代码组成,这些代码在当前的进程中要执行,程序运行时,线程中要划分多个区域,代码要在这些区域中执行,而负责这些功能的那些单独执行空间就是线程。
cpu执行程序:
cpu是电脑的大脑,所有数据都要经过它的处理,他处理数据是以时间碎片的形式在程序之间来回切换。
class Test extends Thread {
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("run" + i);
}
}
}
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
t.start();
for (int i = 0; i < 20; i++) {
System.out.println("main" + i);
}
System.out.println("main is over");
}
}
此处是线程定义的一种方式,通过api帮助文档我们得知,第一步定义一个新的类继承Thread类,第二步重写run方法,将需要开辟的代码写在里边,第三步调用start方法。
有人可能要问,你直接调用run方法就是,为什么要调用start方法?
那是因为,你直接调用run方法时,它和main方法一样会进栈,共同在一个主线程,会先执行run方法,再执行下面的代码。用star方法,java会在栈中开辟一个新的线程。