java 多线程快速入门

栏目: 编程语言 · Java · 发布时间: 7年前

内容简介:java 多线程快速入门

这里将了解以下信息:

1.线程与进程

2.为什么要使用多线程?

3.多线程应用场景

4.多线程创建方式

5.线程生命周期

6.面试总结

一、线程与进程

        每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

        使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。

        如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空间,线程的中止需要考虑其对程序运行的影响。通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。

    总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。

二、为什么要使用多线程?

    比如搬运东西,如果一个人一小时只能般一块砖,那么100个人是不是在一个小时可以班100块砖?

多线程就是多个人同时进行操作!为什么用多线程,就是提高效率。节省时间!

总结:为了提高程序运行的效率!

三、多线程应用场景

    看了第二点之后,这个场景大多是应用在消耗时间长的方面,读取文件,一个线程读取完毕的时间要 一个小时,那么把文件拆分,用多个线程同时读取。是不是快很多,还有发短信,插数据到数据库等操作!

总结:为了提高程序运行的效率!

四、多线程创建方式

        1.继承 Thread 类

    java 多线程快速入门

2.实现 Runnable 接口

java 多线程快速入门

3.使用匿名内部类创建

java 多线程快速入门

这里有三种创建线程的方法,到底哪一种更好呢?

总结:实现Runnable 接口的方法更好,因为java  是单一继承,不能多重继承。实现接口 还可以继承其他的方法,但是继承Thread 类,就不能继承其他类了。

五、线程的生命周期

   java 多线程快速入门

总结:总共有五个状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态

新建状态:

    就是 new 一个 如何ThreadOne   线程新建。还没调用start 之前。

就绪状态:

    调用start  方法后为就绪状态

运行状态:

    CPU为这个线程分配资源 运行状态

阻塞状态:
        1>线程通过调用sleep方法进入睡眠状态;
        2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;
        3>线程试图得到一个锁,而该锁正被其他线程持有;
        4>线程在等待某个触发条件;

死亡状态:

   1) run方法正常退出而自然死亡,
   2) 一个未捕获的异常终止了run方法而使线程猝死。

    注意阻塞状态 不是死亡状态,判断线程的 是否死亡 可以用 isAlive 方法,如果返回为True 则线程为或者,如果为false 则线程死亡。

面试题总结:

    1.线程与进程的区别?

    答:进程是线程的集合,每一个线程都是一个进程的执行路径。

    2.创建线程有哪几种方式,用那种更好?

    答:有三种,分别是 继承Thread 类,实现Runnable接口,匿名内部类创建。用事先Runnable 接口比较好,因为 java 是单一继承,不能多重继承,实现Runnable 接口,可以继承,实现其他的类。不受次限制。

    3.启动线程是调用什么方法?

    答:调用start 方法。

    4.调用start 方法也是执行run 方法内部的代码,为什么不直接调用run 方法?

    答:调用start 方法是启动线程,而调用run 方法只是 使用实例调用方法而已。

        


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

敏捷软件开发

敏捷软件开发

马丁 / 邓辉、孙鸣 / 人民邮电出版社 / 2008-01-01 / 69.00元

《敏捷软件开发:原则模式和实践(C#版)》不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作。而且还是一部通俗的敏捷方法导引书和快速实用的LJML教程。通过《敏捷软件开发:原则模式和实践(C#版)》你会发现,许多以前看起来非常枯燥费解的概念,忽然间都豁然开朗。变得鲜活生动起来。 C#版与此前的Java版相比,主要的更新包括加强了UML的介绍章节。使其更加贴近实战;增加了对MVP模式的介......一起来看看 《敏捷软件开发》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具