码迷,mamicode.com
首页 > 编程语言 > 详细

Java多线程---入门篇

时间:2018-10-14 23:02:30      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:关键字   定义   出现   变量   学习   包含   read   效率   线程   

一.什么是多线程

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

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

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

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

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

 

二.为什么要使用多线程

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多线程---入门篇

标签:关键字   定义   出现   变量   学习   包含   read   效率   线程   

原文地址:https://www.cnblogs.com/dawner/p/9770076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!