当我们启动了一个微信的时候,微信就是一个进程;
同理当我们打开百度网盘的时候,就相当于开启了一个百度网盘进程。
Windows系统可以打开“任务管理器”来查看开启的“进程”。
线程:是电脑操作系统能够进行运算调度的最小单位。一个进程可以存在多个线程。
我们电脑CPU常见的4核4线程、2核4线程是什么意思?
举例:如果把CPU比作一个银行,CPU核心就相当于柜员(柜台窗口办公人员),线程数就相当于柜台窗口数量,柜员和窗口数量越多,电脑的数据处理能力就越强。
4核4线程 = 一人控制一个柜台窗口
2核4线程 = 两个人同时管理四个柜台窗口,相当于一人控制两台柜台窗口。
并行:指多个事件在同一个时刻发生;
并发:指在某时刻只有一个事件在发生,某个时间段内由于CPU交替执行,可以发生多个事件。
例如:高速公路上设有收费站,假设有两条道路;
/**
* 创建Thread多线程类
*/
class MyThread extends Thread {
@Override
public void run() {
System.out.println("线程T2");
}
}
public class Demo {
public static void main(String[] args) {
System.out.println("我是主线程方法开始");
Thread t1 = new MyThread();
t1.start(); // 执行多线程run方法
System.out.println("我是主线程方法结束");
}
}
public static void main(String[] args) {
Thread t1 = new Thread() {
@Override
public void run() {
System.out.println("线程T2");
}
};
t1.start();
}
/**
* 创建多线程类
*/
class MyThread implements Runnable {
@Override
public void run() {
System.out.println("线程T2");
}
}
public class Demo {
public static void main(String[] args) {
System.out.println("我是主线程1方法开始");
// 创建线程类
MyThread myThread = new MyThread();
// 将线程类交给Thread管理
Thread thread = new Thread(myThread);
// 执行线程类的run方法
thread.start();
System.out.println("我是主线程2方法结束");
}
}
需要注意的是线程创建完成后,执行start()方法,才是真正启动线程去并发执行任务
,而run()只是一个普通的实例方法,没有启动线程的作用。
线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态、死亡状态
。
在执行new Thread(s),线程对象一旦创建就进入新建状态,此时线程还没有运行仍处于新建状态。
在线程对象创建完成后调用start()方法进入就绪状态,但是线程不会立刻被CPU调度执行。
当CPU开始调度处于就绪状态的线程时,进入运行状态,开始执行run()方法。
处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权:
例如:****
线程通过调用sleep方法进入睡眠状态;
线程试图得到一个锁,而该锁正被其他线程持有;
线程 run ()方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍎原创不易,感觉对自己有用的话就❤️点赞👉收藏💬评论把。