目录
一。并发和并行
个人理解:多线程就是一个程序可以干很多事
单线程:同一时间,只允许执行一个线程
多线程:同一时间,可以执行多个线程
例如:一个QQ可以进行多个聊天进程,一个迅雷下载可以进行多个下载的人物。简单来说多线程就是一个程序可以在同一时间执行多个任务。
并发与并行
并发:同一时间多个任务交替执行,造成貌似在同时处理多件事的效果。
例如:一个人既在开车又在打电话
例如:单核cpu处理多个进程。
并行:同一时间多个cpu处理多个进程。多核cpu实现并行。
例如:一个人打电话一个人开车
补充:可以通过任务管理器查看电脑进程,可以通过 任务管理器——性能——打开资源监控器——cpu 可以查看自己电脑cpu的状态
通过下列代码可以查看自己电脑cpu为几核
public class CpuNum {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
int i = runtime.availableProcessors();
System.out.println(i);
}
}
二。有关于线程的基本原理
1.第一种创建线程的方式
一共有两种创建方式,实现接口的更具有广泛性(更好使)
继承Thread类,然后重写run()方法
public class Thread1 {
public static void main(String[] args) {
Mao mao = new Mao();
mao.start();
System.out.println("线程的名字是"+Thread.currentThread().getName());
}
}
class Mao extends Thread{
@Override
public void run() {
System.out.println("猫猫在喵喵叫。。。");
System.out.println("线程的名字是"+Thread.currentThread().getName());
}
}
问题:为什么调用使用的是start方法,而不是run,原因如下图,真正创建线程的是start方法当中的start0方法,而不是run方法。
运行结果:
线程的名字是main
猫猫在喵喵叫。。。
线程的名字是Thread-1
补充:我们通过下面两行代码获取了线程的名字,以证明确实是创建了线程的.其中main线程是主方法自带的线程。Thread-1是我们通过继承Thread创建的
System.out.println("线程的名字是"+Thread.currentThread().getName());
例题: