Java线程
Posted 小郑要做干饭人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java线程相关的知识,希望对你有一定的参考价值。
1.什么是进程?
进行运行的程序叫做进程,进程是系统分配资源的基本单位,使用PID来区别进程
2.什么是线程?
线程是进程中的一条执行路径,也是CPU的基本调度单位。一个进程有一个或多个线程组成,彼此间完成不同的工作,同时执行,称为多线程。
3.进程和线程的区别
(1)进程是操作系统资源分配的基本单位,而线程是CPU的基本调度单位。
(2)一个程序运行后至少有一个进程
(3)一个进程可以包含多个线程,但是只有需要有一个线程,否则这个进程是没有意义。
(4)进程间不能共享数据段地址,但是同进程的线程之间可以。
4.为什么使用线程
为了解决负载均衡问题,充分利用CPU资源,为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而互不干扰,为了处理大量的IO操作时或处理的情况需要花费大量的时间等等,比如:读写文件,视频图像 的采集,处理,显示,保存等
单核时代: 在单核时代多线程主要是为了提高 CPU 和 IO 设备的综合利用率。举个例子:当只有一个 线程的时候会导致 CPU 计算时,IO 设备空闲;进行 IO 操作时,CPU 空闲。我们可以简单地说这两者 的利用率目前都是 50%左右。但是当有两个线程的时候就不一样了,当一个线程执行 CPU 计算时,另外 一个线程可以进行 IO 操作,这样两个的利用率就可以在理想情况下达到 100%了。
多核时代: 多核时代多线程主要是为了提高 CPU 利用率。举个例子:假如我们要计算一个复杂的任务, 我们只用一个线程的话,CPU 只会一个 CPU 核心被利用到,而创建多个线程就可以让多个 CPU 核心被 利用到,这样就提高了 CPU 的利用率
5.Java如何创建线程
方式一:继承Thread类:
package com.zzx.线程;
/**
* @date: 2022/08/10/ 22:24
* @author: ZhengZiXuan
* @title: 通过继承Thread类来实现线程,调用run/start方法
* @description:
*/
public class ThreadTest extends Thread
@Override
public void run()
for (int i = 0; i < 100; i++)
System.out.println("我在听课"+i);
class Test
public static void main(String[] args)
ThreadTest threadTest = new ThreadTest();
threadTest.start();
for (int i = 0; i < 2000; i++)
System.out.println("我在看代码"+i);
通过控制台运行结果可看出,当调用start方法时,两条线程是同时执行的
package com.zzx.线程;
/**
* @date: 2022/08/10/ 22:24
* @author: ZhengZiXuan
* @title: 通过继承Thread类来实现线程,调用run/start方法
* @description:
*/
public class ThreadTest extends Thread
@Override
public void run()
for (int i = 0; i < 100; i++)
System.out.println("我在听课"+i);
class Test
public static void main(String[] args)
ThreadTest threadTest = new ThreadTest();
threadTest.run();
for (int i = 0; i < 2000; i++)
System.out.println("我在看代码"+i);
// 总结: 线程开启不一定立即执行,由CPU调度执行
当调用run方法时,我们可以发现两个线程是顺序执行的,也就是第一条线程执行完之后,第二条线程才会执行,以此类推
以上是关于Java线程的主要内容,如果未能解决你的问题,请参考以下文章