线程的概念:线程是进程中独立运行的子任务。(就例如我们打开任务管理器,进程面板中罗列的都是当前机器上运行的进程,例如其中有个正在运行的qq进程,在qq进程中发送文件到手机上面和跟好朋友聊天,这就是两个不同的线程)。
使用多线程的背景:原来的电脑都是单核的,然后需要CPU根据时间片来轮询每个线程,可这样,效率很低下。随着技术的跟新,如今电脑都是多核的,使用多线程可以提升效率节省资源。这个其实就好比银行办理业务。最开始都只有一个服务窗口,但是由于来银行办理业务的人越来越多,银行长大手一挥说:“人多了,那就多加几个窗口”,没过多长时间,人们又说银行办公人员都有周六日的,但是我们有时候又偏偏在周六日要办理业务,而且还是24小时不固定是哪个点办理业务,于是银行长又来了,再次大手一挥说:“顾客就是上帝,那就添加几个自动服务窗口。”这个简单的例子就是多线程的写照。
实现多线程的方式:
1. 继承Thread类
2. 实现Runable接口。
线程的分类:
1. 用户线程
2. 守护线程。
备注:守护线程是用户线程的保姆,最典型的应用GC回收线程。换句话说,如果用户线程都撤离了虚拟机,那么守护线程也将誓死追随用户线程的脚步离开虚拟机。而且用户线程变成守护线程只需要使用setDaemon方法就可实现。
线程的优先级
就如我们去银行办理业务是一样的道理,都需要先领个号,然后排号,等着叫号。那许多线程又是如何安排他们的执行顺序的呢?这就是通过线程的优先级来实现的。线程最小优先级是1,最大是10,常见的是5。
线程的常用方法:
1. currentThread()方法查看当前线程。
2. isAlive()查看线程是否存活
3. sleep()使线程进入睡眠状态,减缓线程的执行,让其他线程有机会执行。
4. getId()获得线程的Id编号。
5. yield()方法让当前的线程放弃CPU的资源,重新进入CPU资源竞选。
6. stop()暴力停止线程,不推崇使用。
7. interrupted()停止线程
8. suspend()暂停线程
9. resume()恢复线程。
线程的生命状态
好了,线程的基础知识就暂时分享到这里了,后期还会有一些关于线程的实践博客,欢迎拍砖。