小白学Java之多线程
一. 问题背景
最近有个已经工作了几年的小伙伴,给波哥发来私信,他最近想换工作,可是自己对Java的基础内容忘得差不多了,尤其是多线程,于是就想让波哥给他梳理一下多线程相关的内容。所以,波哥今天就给大家安排上。
二. 什么是进程
在复习线程之前,波哥先给大家说一下进程的概念。
所谓的进程,就是系统进行资源分配和调用的独立单元,每一个进程都有它独立的内存空间和系统资源。
目前的计算机系统,可以分为单进程和多进程系统,其区别如下:
· 单进程操作系统:dos(一瞬间只能执行一个任务)
· 多进程单用户操作系统:Windows(一瞬间只能执行多个任务)
· 多进程多用户操作系统:Linux(一瞬间只能执行多个任务)
三. 什么是线程
然后我们再来看看什么是线程。
所谓的线程,就是进程里面的一条执行路径,多个线程可以共享进程里面的内存空间和系统资源。一个进程中可以有多个线程,各个线程都有不同的分工。
那么进程和线程有什么关系呢?看看波哥给大家的总结吧:
· 进程与进程之间,其内存空间和系统资源是独立的;
· 同一个进程里的多个线程之间,其内存空间和系统资源是共享的;
· 一个进程里可以有一条或一条以上的线程;
· 如果一个进程里只有一条线程,这条线程就叫做主线程;
· 线程是在进程里的,他们是包含与被包含的关系。
四. 创建线程的方式
那么我们该怎么创建出一个线程呢?一般情况下,我们可以采用以下方式。
1. 继承线程类
在这种方式中,我们可以创建一个MyThread类继承Thread,并重写run方法,代码如下:
public class Test01 {
public static void main(String[] args) {
//创建线程的对象
MyThread t = new MyThread();
//启动线程
t.start();
}
}
//线程类
class MyThread extends Thread{
//当前线程抢到cpu资源后,就会执行run方法
@Override
public void run() {
System.out.println("当前线程抢到资源了");
}
}
2. 实现Runnable接口
第二种方式就是实现Runnable接口。我们可以创建一个Task类,实现Runnable接口并重写run方法。
public class Test01 {
public static void main(String[] args) {
Thread t = new Thread(new Task());
t.start();
}
}
//任务类
class Task implements Runnable{
//当前线程抢到cpu资源后,就会执行run方法
@Override
public void run() {
System.out.println("抢到资源了");
}
}
另外我们还可以通过实现Callable接口,或是利用Executors线程池创建线程,这两种方式波哥就不演示实现代码了,感兴趣的同学可以私信波哥获取教程哦。
五. 总结
最后再给大家总结一下今天的重点:
· 进程与进程的关系:进程独享内存空间和系统资源;
· 线程与进程的关系:一个进程中至少包含一个线程;
· 线程与线程的关系:在同一个进程里,多个线程共享内存空间和系统资源;
· 一个进程中可以包含多个线程,但只有一个主线程。
猜你喜欢LIKE
相关推荐HOT
更多>>哪些语言可以用来开发网络爬虫程序
可以用多种编程语言来开发网络爬虫程序,其中比较流行的语言有:1.Python:Python是目前最为流行的网络爬虫编程语言之一,因为它有许多用于网络...详情>>
2023-05-23 10:56:063分钟带你学会APP的功能测试
很多小伙伴不知道APP的功能应该怎么测试,其实APP与WEB一样,功能测试主要也是测试软件的功能特性。但APP又与WEB不一样,因为一个是C/S架构,一...详情>>
2023-05-16 11:17:00牢记这些点,掌握写好自动化测试用例的宝典
今天为大家带来的是自动化用例设计宝典,目前在从事自动化工作的小伙伴,可得认真查看啦.一.自动化测试的目的首先我们必须要明确,自动化测试的目...详情>>
2023-05-16 11:15:20小白学Python之数据分析可视化之热力图
热力图,热力图中的每个值都被表示为一个颜色数据。 import seaborn as sns import pandas as pd import numpy as np详情>>
2023-04-04 11:13:00