1.什么是进程?
电脑 任务管理器
同时按下Ctrl,Alt和delete三键,点开任务管理器。我们会看到其中有个进程
我们可以结合电脑中的任务管理器的信息变化,来理解进程
进程即正在执行的程序,比如谷歌浏览器它是一个进程,但是我们会看到如下图
这里就引出了线程,下图中红框中的就是一个个线程
2.什么是线程?
线程是进程的基本单位,一个进程中可以同时存在多个线程。将线程想象成控制单元
3.多线程的两种实现方式
首先请看我项目中的两个java类
Windows.java
Windows1.java
我们会发现无论如何都无法将两个java类即Windows.java和Windows.java同时执行。这时候就需要用到多线程来实现这种场景
第一种实现方式 是创建普通类继承Thread
TaskThread.java
package com.commons.commons.taskthread;
/**
* @Author zhaomengxia
* @create 2019/9/25 14:54
*/
public class TaskThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("i= " + i);
}
}
}
TaskThread1.java
package com.commons.commons.taskthread;
/**
* @Author zhaomengxia
* @create 2019/9/25 14:55
*/
public class TaskThread1 extends Thread {
@Override
public void run() {
for (int j = 0; j < 100; j++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("j=" + j);
}
}
}
启动线程,调用的是start()而不是run()。就上诉测试类来讲,经过测试会发现调用run()方法实际是单线程的就是先把 TaskThread.java里面run()方法执行完再执行TaskThread1.java里面的run()方法。
运行结果
如果调用的是run方法
下图是调用run方法的输出结果,可知,启用线程要调用start()而不是run()。