1.概念
程序:是一系列指令的集合,是静态的。比如说我们的QQ、微信、网易云音乐等。
进程:程序运行后就会产生进程,每个进程在内存中都有一个独立的地址空间,是操作系统进行资源分配和调度的独立单元。进程之间可以并发执行。一个进程包含多个线程。
线程:是进程的一个实体,是cpu进行调度和分配的基本单位。由于线程比较小更容易进行并发,而且其中的一个线程死掉也不会导致整个进程的崩溃。
2.引入线程的思想。
多线程在现代互联网的应用非常广泛,如大型的电商网站、12306等对并发的要求都非常的高。
3.实现多线程
通常来说实现一个线程的方法有两种:继承Thread和实现Runnable接口
下面就是一个继承Thread类的线程。
public class ThreadDemo1 extends Thread{
private String name;
ThreadDemo1(String name){
this.name = name;
}
@Override
public void run() {
for (int i = 0; i < 60; i++) {
System.out.println(name+"继承Thread线程运行:"+i);
}
}
}
对这个类进行测试:
public class Test {
public static void main(String[] args){
ThreadDemo1 demo1 = new ThreadDemo1("one");
ThreadDemo1 demo2 = new ThreadDemo1("two");
demo1.start();
demo2.start();
}
}
}
可以看到程序会随机的输出两个线程的打印结果。两个线程的输出顺序是不确定的。
为什么会出现这种情况呢?
因为线程的运行是由cpu进行调度的,一个cpu在同一时间只能运行一个线程(单核cpu),之所以我们看到很多程序同时在运行是因为cpu在做很快的切换操作。cpu调到了谁就执行谁。