zoukankan      html  css  js  c++  java
  • Java中线程的生命周期

    首先简单的介绍一下线程:

      进程:正在运行中的程序。其实进程就是一个应用程序运行时的内存分配空间。

      线程:其实就是进程中的一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。

    线程的生命周期:

      一般来说线程状态有一下几种:

      ①新建:

        创建线程对象。

      ②就绪:

        start方法被调用,线程获得了执行资格,但还没有执行权。

        (随机性的原理:因为cpu的快速切换造成,哪个线程获取到了cpu的执行权,哪个线程就执行。)

      ③运行:

        线程获得了CPU的执行权,此状态有执行资格也有执行权。

      ④阻塞:

        由于一些操作让线程处于了该状态,没有了执行资格,也没有了执行权。而另一些操作又可以将线程激活,激活后处于就绪状态。

      ⑤死亡:

        run方法结束,线程对象变成垃圾,等待GC回收。

    在顺便介绍一下线程的一些方法:

      void run()   继承Thread或者实现Runnable时必须实现的方法,里面写耗费时间的操作。

      void start() 开启线程的方法

      static void sleep(long t) 释放CPU的执行权,不释放锁

      static void sleep(long millis,int nanos)

      final void wait()释放CPU的执行权,释放锁

      final void notify()唤醒线程池中的任意一个线程

      interrupt():中断线程。

      setPriority(int newPriority):设置线程的优先级。(默认优先级是5)

      getPriority():返回线程的优先级。

      toString():返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

      Thread.yield():暂停当前正在执行的线程对象,并执行其他线程。 礼让线程

      setDaemon(true):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。该方法必须在启动线程前调用。

      join: 加入一个线程,当这个线程执行完之后才会执行别的线程。

  • 相关阅读:
    服务器/服务器架构/阿里云服务器/虚拟机
    第十五章、线程之协程
    第十五章、线程池和进程池
    第十五章、线程之queue模块的各种队列
    第十五章、Python多线程之信号量和GIL
    第十五章、Python多线程同步锁,死锁和递归锁
    第十五章、并发编程之守护线程
    第十五章、并发编程之线程
    抢票小程序
    队列与生产者消费者模型
  • 原文地址:https://www.cnblogs.com/makaruila/p/4831905.html
Copyright © 2011-2022 走看看