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多线程---入门篇的主要内容,如果未能解决你的问题,请参考以下文章