线程学习知识点总结

Posted xiao-bd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程学习知识点总结相关的知识,希望对你有一定的参考价值。

说起线程,咱们得先了解一下几个词语:线程,进程,程序,多线程,多进程。 

  • 程序:是操作系统中实现多个功能的代码块,也叫软件
  • 进程:计算机上正在运行的程序
  • 线程:进程内的一个执行单元,也是进程内的可调度实体
  • 多进程:在计算机中并发运行的运行的多个进程
  • 多线程:在单个程序中同时运行多个线程完成不同的工作
  • 并发:计算机的cpu在运行程序的时候,会将时间划分为多个时间片段,而在这些时间片段中,每个时间片段中只能执行一个线程,对于线程来说,它们执行的时候是断断续续,走走停停的,但在宏观上来看,它们是一起执行的,像这样的多个进程同时执行,我们就称之为“并发”,一般发生在一个处理器中。
  • 并行: 在多个处理器中,每个处理器之间执行任务是互不影响的,在微观上来看它们是同时执行的。

线程的状态

  线程的状态至少有四种:新建状态,就绪状态,运行状态,(阻塞状态),死亡状态技术分享图片

  1.新建状态

    当线程被(new)创建的时候,此时的线程的状态为新建状态

      线程的创建方式有三种(有的书还有资料说只有两种)

        ①:继承Thread类

          通过继承Thread类,重写run方法(线程的主方法体),调用start()方法来启动线程。 

        ②:实现runnable接口

          通过实现runnable接口(任务接口),重写接口中的run()方法(线程任务的方法体),创建线程,然后将实现类的实例作为线程参数,然后调用start()方法启动线程

        ③:通过使用FutureTask

          使用FutureTask来创建线程,然后用Callable来创建任务(即重写callable中的call()方法,返回值为null),然后将FutureTask作为参数创建线程

  2.就绪状态

    当线程创建后,线程就进入新建状态,如果不调用线程的start()方法,线程就不会进入就绪状态。调用start()方法后线程进入可运行线程池进行等待获取cpu资源

  3.运行状态

    当线程获取到cpu资源后,线程就开始运行,但是每个线程并不一定是执行完了属于自己的线程体的内容,再去执行下一个线程(当要执行完线程体内容时间过短时)。每个线程被分为为若干个片段,它们获取到的cpu资源不能被其一直占有,它们运行的时候是走走停停,达到所谓的并发执行,且它们的执行次序与其获取cpu资源的概率(能力)有关,获取的概率越大,就执行的次数越多。

  4.死亡状态

    当线程的方法体执行完毕

  5.阻塞状态(并不是每一个线程都会有这种状态)

    ①.等待阻塞:当前线程所占用的cpu资源被剥夺,等待再次获得cpu。线程休眠

    ②.同步阻塞:锁对象被其他线程占用,当前线程等待其他线程释放锁对象

    ③.其他阻塞:sleep(),join().

附录:常用方法

线程中常用的方法

void run()

如果这个线程使用单独的Runnable运行对象构造,则调用该

Runnable对象的run方法; 否则,此方法不执行任何操作并返回

void start() 导致此线程开始执行; Java虚拟机调用此线程的run方法。

long getId()

返回此线程的标识符 String getName() 返回此线程的名称
int getPriority() 返回此线程的优先级 Thread.State getState() 返回此线程的状态
void interrupt() 中断这个线程 void setDaemon() 设置为守护线程
void join() 等待这个线程死亡 void sleep(long miles)

导致正在执行的线程以指定的毫秒数加上指定的纳秒数来暂停

(临时停止执行),这取决于系统定时器和调度器的精度和准确性

 

以上是关于线程学习知识点总结的主要内容,如果未能解决你的问题,请参考以下文章

20175310 《Java程序设计》第10周学习总结

20165312 2017-2018-2《JAVA程序设计》第8周学习总结

马凯军201771010116《面向对象与程序设计Java》第十六周知识学习总结

Java学习---面试基础知识点总结

学习java第19天个人总结

[转帖]Linux系统进程的知识总结,进程与线程之间的纠葛...