【线程】--基础知识

来源:互联网 发布:淘宝量子恒道统计 编辑:程序博客网 时间:2024/06/06 02:26

     线程的概念:线程是进程中独立运行的子任务。(就例如我们打开任务管理器,进程面板中罗列的都是当前机器上运行的进程,例如其中有个正在运行的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()恢复线程。

 

    线程的生命状态


    好了,线程的基础知识就暂时分享到这里了,后期还会有一些关于线程的实践博客,欢迎拍砖。

原创粉丝点击