内容简介:java 多线程快速入门
这里将了解以下信息:
1.线程与进程
2.为什么要使用多线程?
3.多线程应用场景
4.多线程创建方式
5.线程生命周期
6.面试总结
一、线程与进程
每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。
使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。
如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空间,线程的中止需要考虑其对程序运行的影响。通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。
总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。
二、为什么要使用多线程?
比如搬运东西,如果一个人一小时只能般一块砖,那么100个人是不是在一个小时可以班100块砖?
多线程就是多个人同时进行操作!为什么用多线程,就是提高效率。节省时间!
总结:为了提高程序运行的效率!
三、多线程应用场景
看了第二点之后,这个场景大多是应用在消耗时间长的方面,读取文件,一个线程读取完毕的时间要 一个小时,那么把文件拆分,用多个线程同时读取。是不是快很多,还有发短信,插数据到数据库等操作!
总结:为了提高程序运行的效率!
四、多线程创建方式
1.继承 Thread 类
2.实现 Runnable 接口
3.使用匿名内部类创建
这里有三种创建线程的方法,到底哪一种更好呢?
总结:实现Runnable 接口的方法更好,因为java 是单一继承,不能多重继承。实现接口 还可以继承其他的方法,但是继承Thread 类,就不能继承其他类了。
五、线程的生命周期
总结:总共有五个状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态
新建状态:
就是 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 方法只是 使用实例调用方法而已。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP and MySQL Web Development
Luke Welling、Laura Thomson / Sams / July 25, 2007 / $49.99
Book Description PHP and MySQL Web Development teaches you to develop dynamic, secure, commerical Web sites. Using the same accessible, popular teaching style of the three previous editions, this b......一起来看看 《PHP and MySQL Web Development》 这本书的介绍吧!