• java线程


    线程中的中断

    interrupt方法

    当对一个线程调用interrupt方法时,线程被中断。

    islnterrupted方法

    调用静态的Thread.currentThread方法获得当前线程,然后调用islnterrupted方法判断当前线程是否中断.

    调用这个方法不会改变中断状态

    但是,如果线程被阻塞就无法检测中断状态.这是产生Interrupted Exception异常的地方.

    当在一个被阻塞的线程(调用sleepwait)上调用interrupt方法时,

    阻塞调用将会被Interrupted Exception异常中断 。

    Interrupted方法

    Interrupted方法是一个静态方法,它检测当前的线程是否被中断.

    而且,调用interrupted方法会清除该线程的中断状态

    volatile

    假设对共享变量除了赋值之外并不完成其他操作 , 那么可以将这些共享变量声明为volatile.

    线程的生命周期六个状态

    • New(新创建)
    • Runnable(可运行)
    • Blocked(被阻塞)
    • Waiting(等待)
    • Timed Waiting(计时等待)
    • Terminated(被终止)

    Runnable(可运行)

    记住,在任何给定时刻,二个可运行的线程可能正在运行也可能没有运行(这就是为什么将这个状态称为可运行而不是运行)

    Waiting(等待)

    当线程等待另一个线程通知调度器一个条件时
    , 它自己进入等待状态 。 在调用 Object . wait 方法或 Thread . join 方法
    , 或者是等待 java ,
    util . concurrent 库中的 Lock 或 Condition 时 , 就会出现这种情况

    Terminated(被终止)

    线程因如下两个原因之一而被终止 :

    • 因为run方法正常退出而自然死亡 。
    • 因为一个没有捕获的异常终止了run方法而意外死亡 。

    线程的3种创建方式

    1.继承Thread类创建线程

    2.实现Runnable接口创建线程

    new Thread(()->{
    		System.out.println("hello");
    	}).start();
    

    3.使用Callable和Future创建线程

  • 相关阅读:
    vue.js 初步学习
    IntelliJ IDEA 快捷键
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    JavaScript基础概念与语法
    python 常见矩阵运算
    利用matplotlib的plot函数实现图像绘制
    基于密度峰值的聚类(DPCA)
    极角排序
    HDU-5514 Frogs (容斥)
    HDU
  • 原文地址:https://www.cnblogs.com/bihanghang/p/10177789.html
Copyright © 2020-2023  润新知