线程学习知识点总结

2021-06-20 14:03

阅读:339

标签:string   次数   常用   border   计算   执行   getname   dir   参数   

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

  • 程序:是操作系统中实现多个功能的代码块,也叫软件
  • 进程:计算机上正在运行的程序
  • 线程:进程内的一个执行单元,也是进程内的可调度实体
  • 多进程:在计算机中并发运行的运行的多个进程
  • 多线程:在单个程序中同时运行多个线程完成不同的工作
  • 并发:计算机的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)

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

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

 

线程学习知识点总结

标签:string   次数   常用   border   计算   执行   getname   dir   参数   

原文地址:https://www.cnblogs.com/xiao-bd/p/9689004.html


评论


亲,登录后才可以留言!