千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:深圳千锋IT培训  >  技术干货  >  小白学Java之多线程

小白学Java之多线程

来源:千锋教育
发布人:小C
时间: 2023-05-23 10:59:06

  一. 问题背景

  最近有个已经工作了几年的小伙伴,给波哥发来私信,他最近想换工作,可是自己对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

小白学Java之什么是跨域vue?如何实现跨域

2023-05-29

小白学Python之互联网数据分析之搭建指标体系(四)

2023-04-11

小白学Java之Nginx介绍

2023-03-28

最新文章NEW

小白学Java之socket是什么有什么作用

2023-05-30

哪些语言可以用来开发网络爬虫程序

2023-05-29

小白学Java之DML数据操作(增删改)

2023-05-23

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>