进程是指可执行程序并存储在计算及存储器的一个指令序列,他是一个动态执行的过程
线程是比进程还要小的运行单位,一个进程包含多个线程
线程可以看做一个子程序
创建:
创建一个Thread类,或者一个Thread子类的对象
创建一个实现Runnable接口的类的对象
package Threadproj;
//创建一个线程
class MyTread extends Thread{
public void run() {
System.out.println(getName()+"该线程正在执行");
}
}
public class ThreadTest {
public static void main(String[] args) {
System.out.println("主线程1");
MyTread mt = new MyTread();
//启动线程
mt.start();
//当前两个线程在运行,主方法是一个线程
System.out.println("主线程2");
}
}
打印的顺序与我们正常程序的执行顺序不一样,也就证明了进程的执行顺序
需要注意的是:线程只能启动一次
package ThreadprojThreadproj1;
class MyThread extends Thread{
public MyThread(String name) {
super(name);
}
public void run() {
for(int i = 0 ; i < 10 ; i++) {
System.out.println(getName()+"正在运行第"+i+"次");
}
}
}
public class ThreadTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread mt1 = new MyThread("线程1");
MyThread mt2 = new MyThread("线程2");
mt1.start();
mt2.start();
}
}
在这里我们又建立了一个测试类,看看两个线程同时进行时的运行效果
我们两次的运行结果是不一样的,这证明我们线程在运行时获取CPU的资源是随机的