点我跳过黑哥的卑鄙广告行为,进入正文。

Java多线程系列更新中~

  正式篇:

  1. Java多线程(一) 什么是线程
  2. Java多线程(二)关于多线程的CPU密集型和IO密集型这件事
  3. Java多线程(三)如何创建线程
  4. Java多线程(四)java中的Sleep方法
  5. Java多线程(五)线程的生命周期

  番外篇(神TM番外篇):

  1. Java 过一下基础
  2. 转载:java中Thread.sleep()函数使用
  3. Java多线程 Socket使用

注:大家也需要了解一下英文,因为中文翻译都有偏差

1. 新建(new)

  当你创建一个Thread对象时,这个线程就处于新建状态。如:

//这里Multi继承了Runnable接口
//如果对此不了解,可以看一下我博客的前面几节
class Multi implements Runnable{
public void run(){
System.out.println("thread is running...");
} public static void main(String args[]){
Multi m1=new Multi();
Thread t1 =new Thread(m1);
     //就到这一行,目前为止的状态是新建(new)
t1.start(); //如果注释掉这行代码,那么程序什么也不会输出,因为还没进入就绪状态(Runnable)
}
}

举个栗子,CPU是一个碧池,她同时谈着多个男朋友(很多线程),但是会轮番陪着不同的男友(执行不同的线程)。你(也是一个线程)想要加入这个大家庭,人多热闹更欢快啊!new状态就是你决定加入这个大家庭但是还没加入。

2.就绪(Runnable)

接着举上面的栗子,Runnable状态是什么呢?就是你成功当上了她众多男友之一,但是那个碧池在陪别人,还没轮到你。

3.运行(Running)

恭喜你,上位了。你的女朋友终于来陪你了。

4.阻塞(Block)

阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪)。简单来说,就是你感冒了,感冒的原因可能有多种(可以有多种方法进入阻塞状态),那个轮番陪男友的碧池就把你跳过去了,直到你感冒好利索为止。

这个状态需要再描述一下,毕竟事关女朋友的占用时间。

Java线程的阻塞及唤醒有如下几种方法。

  • sleep()方法

  这个在上一节已经说过,就是sleep(指定毫秒),当前线程会在你指定的时间内进入阻塞状态,直到时间到了,才进入可执行状态。

  具体的可以上前一节看一下:Java多线程(四)java中的Sleep方法

  • suspend()和resume()方法

  suspend()使线程进入阻塞状态,只有对应的resume()被调用的时候,线程才重新进入可执行状态。这位由于政治不正确已经被踢出群了。开个玩笑,其实是它会造成死锁,被弃用了,后续我们将会提到锁的概念,这里先mark一下。

  • wait()方法

在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。线程在运行的时候,如果发现某些条件没有被满足,可以调用wait方法暂停自己的执行,并且放弃已经获得的锁,然后进入等待状态。当该线程被其他线程唤醒并获得锁后,可以沿着之前暂停的地方继续向后执行,而不是再次从同步代码块开始的地方开始执行。但是需要注意的一点是,对线程等待的条件的判断要使用while而不是if来进行判断。

  代码呢?说一堆屁话,代码呢?

  客套话:别急,慢慢来,这里先对线程的生命周期有个大概的了解,后面我们会详细介绍。

  内心:都写完了那这个系列还写个P啊

Java多线程(五)线程的生命周期的更多相关文章

  1. Java多线程之线程的生命周期

    Java多线程之线程的生命周期 一.前言 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(R ...

  2. Java多线程 2 线程的生命周期和状态控制

    一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就 ...

  3. java基础24 线程、多线程及线程的生命周期(Thread)

    1.1.进程 正在执行的程序称作为一个进程.进程负责了内存空间的划分 疑问1:windows电脑称之为多任务的操作系统,那么Windows是同时运行多个应用程序呢? 从宏观的角度:windows确实在 ...

  4. JAVA面试题 线程的生命周期包括哪几个阶段?

    面试官:您知道线程的生命周期包括哪几个阶段? 应聘者: 线程的生命周期包含5个阶段,包括:新建.就绪.运行.阻塞.销毁. 新建:就是刚使用new方法,new出来的线程: 就绪:就是调用的线程的star ...

  5. java多线程回顾2:生命周期与控制

    1.  线程生命周期概述 线程的生命周期如下图: 2.  新建与就绪 当程序使用new关键字创建一个线程之后,线程就处于新建状态了.此时线程只是被分配了内存资源,初始化了成员变量. 当线程对象被调用了 ...

  6. java多线程(2)---生命周期、线程通讯

    java生命周期.线程通讯 一.生命周期 有关线程生命周期就要看下面这张图,围绕这张图讲解它的方法的含义,和不同方法间的区别.    1.yield()方法 yield()让当前正在运行的线程回到就绪 ...

  7. Java多线程(五) —— 线程并发库之锁机制

    参考文献: http://www.blogjava.net/xylz/archive/2010/07/08/325587.html 一.Lock与ReentrantLock 前面的章节主要谈谈原子操作 ...

  8. java线程的生命周期及五种基本状态

    一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...

  9. Java多线程开发系列之三:线程这一辈子(线程的生命周期)

    前文中已经提到了,关于多线程的基础知识和多线程的创建.但是如果想要很好的管理多线程,一定要对线程的生命周期有一个整体概念.本节即对线程的一生进行介绍,让大家对线程的各个时段的状态有一定了解. 线程的一 ...

随机推荐

  1. MySQL行转列

    IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则 ...

  2. [转]Node.JS使用Sequelize操作MySQL

    Sequelize官方文档  https://sequelize.readthedocs.io/en/latest/ 本文转自:https://www.jianshu.com/p/797e10fe23 ...

  3. Java学习笔记之——封装

    1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...

  4. python基础学习(五)while循环语句

    while循环基本使用 循环的作用就是让指定的代码重复的执行 while循环最常用的应用场景就是让执行的代码按照指定的次数重复执行 流程图 基本语法 初始条件设置 —— 通常是重复执行的 计数器 wh ...

  5. linux 下修改mysql下root 权限来允许远程连接

    MySQL默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接. 其操作简单,如下所示: 1. 进入mysql: /usr/local/mysql/bin/ ...

  6. 4种方法实现Html转码

    <script> var HtmlUtil = { /*1.用浏览器内部转换器实现html转码*/ htmlEncode: function(html) { //1.首先动态创建一个容器标 ...

  7. cf932E. Team Work(第二类斯特灵数 组合数)

    题意 题目链接 Sol 这篇题解写的非常详细 首先要知道第二类斯特灵数的一个性质 \[m^n = \sum_{i = 0}^m C_{n}^i S(n, i) i!\] 证明可以考虑组合意义:\(m^ ...

  8. 【代码笔记】Web-JavaScript-JavaScript字符串

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  9. 支持MPI的hdf5库的编译

    作者:朱金灿 来源:http://blog.csdn.net/clever101 因为最近要研究并行I/O,据说hdf5文件格式可以支持并行I/O,深度学习框架Caffe用的是hdf格式,所以决定把h ...

  10. Ios12怎么投屏到电脑 苹果手机投屏电脑的方法

    苹果手机是一款外观精致时尚的手机,吸引这许多用户争先恐后的购买,然后苹果手机的系统不同于我们传统使用的安卓系统,它采用的是苹果自主研发的IOS系统,有许多操作与安卓手机不同,那么苹果手机怎么用呢?下面 ...