什么是多线程
线程:又称为轻量级的进程,是程序执行流程的基本单位,一个进程就是由多个 线程组成。
同进程内的多个线程可以共享计算资源(cpu 内存 磁盘 网络)
线程的本质就是运行我们要写的代码行,运行的每一行代码都是先获取cpu分片时间,cpu去执行该代码
线程 vs 进程的区别
进程:一个软件的运行,就会创建一个或者多个进程,进程就是计算资源的封装
线程:程序执行的基本单位,一个进程是由多个线程组成的,多个线程间可以共享进程中的计算资源
线程意义
1.提高并发能力
可以让两个事件同时执行
2.异步执行
不阻塞于主线程
简单线程创建
一,继承Thread完成
//创建Thread匿名内部类
Thread thread = new Thread(){
//重写run方法
@Override
public void run() {
//调用该类时提示该线程开始 Thread.currentThread().getName()为获得该线程名字
System.out.println(Thread.currentThread().getName()+"开始");
//在该方法中生成一个循环以创建一个线程
for (int i = 0; i < 1000; i++) {
System.out.println("i = " + i);
}
//循环结束即为该线程占用结束
System.out.println(Thread.currentThread().getName()+"结束");
}
};
//设置自定义下创建的线程名为自定义线程01
thread.setName("自定义线程01");
//匿名内部类准备就绪
thread.start();
//在主方法中创建for循环占用线程
//提示该线程开始
System.out.println(Thread.currentThread().getName()+"开始");
for (int j = 0; j < 1000; j++) {
System.out.println("j = " + j);
}
//提示该线程结束
System.out.println(Thread.currentThread().getName()+"结束");
运行结果如图所示:可以证明两个线程在同时执行
二,通过Runnable()接口实现
//创建Runnable的匿名内部类
Runnable runnable = new Runnable() {
//重写run方法
@Override
public void run() {
System.out.println("自定义线程开始");
for (int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName()+"输出"+i);
}
System.out.println("自定义线程结束");
}
};
//创建线程
Thread thread = new Thread(runnable);
//设置名字
thread.setName("自定义线程01");
//进程开始
thread.start();
//创建主方法中的for循环
System.out.println("主方法开始");
for (int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName()+"输出"+i);
}
System.out.println("主方法结束");