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: 加入一个线程,当这个线程执行完之后才会执行别的线程。

  • 相关阅读:
    delphi中定义了一个过程,是无参的,可是调试中却出现‘too many actual parameters’一般是什么原因
    delphi 实现接口 Unsatisfied forward or external declaration
    安装-[Microsoft] [ODBC驱动程序管理器]找不到数据源名称,未指定默认驱动程序
    delphi中常见错误提示说明
    layui与java后台交互
    delphi中报Left side cannot be assigned to错
    Python快速排序算法
    ubuntu server更改语言为中文
    Ubuntu开启root用户ssh远程密码登录
    错误 Error: electron@13.1.8 postinstall: `node install.js` 的解决
  • 原文地址:https://www.cnblogs.com/makaruila/p/4831905.html
Copyright © 2011-2022 走看看