Java多线程---入门篇

Posted dawner

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程---入门篇相关的知识,希望对你有一定的参考价值。

一.什么是多线程

     在说线程之前,我们先简单说一下什么是进程。进程就是当前计算机中正在运行的程序,

     而线程是计算机中最小的的执行单元。

     需要注意的是每一个进程中至少包含一个线程。一个进程中一般包含多个线程。

     例如我们在电脑中运行一个电脑管家程序,那么正在运行的这个程序(电脑管家)就是一个进程,

     而其中的病毒查杀与清理垃圾这两个功能就是两个线程,即多线程。

 

二.为什么要使用多线程

1.使用多线程可以充分利用CPU的资源,减少程序的响应时间,提高程序运行的效率。

2.与进程相比,线程的创建与切换开销更小(因为线程共享代码段、数据段等内存空间)。

3.多核CPU,多核计算机本身就具有执行多线程的能力,如果使用单个线程,

   将无法重复利用计算资源,造成资源的巨大浪费。

4.多线程可以简化程序的结构,使程序便于维护,一个非常复杂的进程可以分为多个线程执行。

 

三.如何自定义一个线程

1.继承Thread类 ---> extends Thread

技术分享图片

2.实现Runnable接口 ---> implements Runnable

技术分享图片

 

需要注意的是,无论我们使用哪种方法自定义一个线程,都必须要重写父类的run方法

这是因为run方法中定义了当前线程执行的内容,而该方法(run方法)将会由JVM调用。

 

四.多线程应用的执行路径

当我们在应用中定义多个线程时,程序的执行流程将不再按照原有的单线程(主线程)执行流程,

可能会出现各个线程之间相互打断的情况

技术分享图片

此程序执行结果:

技术分享图片

从运行结果我们可以看出,在主线程中定义的三个线程并不是按照顺序执行的(一个执行完毕后另一个再执行)

它们之间发生了相互打断的情况,这也是多线程的特性之一。

我们还需要注意的是,在以上的卖票问题中,必须将总票数定义为static静态变量

从而让三个线程(相当于三个窗口)共享这总票数(100张票)。

否则,三个线程将各自拥有总票数(100张票),导致出现错票(同样的票卖了多次)。

你们可以自己做一下测试,将static关键字去掉在运行程序,就会发生上述错票结果。

 

最后小编给大家(和小编一样的入门小白)提个建议:

static关键字在我们的日常学习中还是很重要的,

所以对static关键字不太了解的小伙伴们最好能抽出时间再把它重新复习一下。

毕竟 “温故为知新,可以为师矣” 嘛,多看看以前学过的知识,相信你一定会有不一样的收获......

 

以上是关于Java多线程---入门篇的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程基础(入门篇)

Java多线程

多线程编程 实战篇

JAVA多线程入门

Java多线程入门

java 多线程 快速入门