1)进程是受操作系统管理的基本运行单元,线程是进程中独立运行的子任务

2)Thread.start()方法通知线程规划器,告知其该线程已经准备完成,可以调用其run方法,这时就是异步的方法;如果直接调用run,就没有交给线程规划器,就是同步方法。另外,执行start的顺序并不是线程启动的顺序。

3)在jvm中i--有三步操作:1、取出i的值;2、做减法;3、赋予i值

4)isAlived方法是检测线程是否属于活动状态

5)sleep的作用是指定毫秒数内让当前正在执行的线程休眠,正在执行的线程指的是this.currentThread返回的线程

6)getID方法是获取线程的唯一标识

7)Thread.stop停止线程,但是并不是线程安全的(调用Thread.stop时会抛一个ThreadDeath异常,通常不需要处理该异常,强制stop会释放锁(线程处理数据没处理完,处理到一半就释放锁了,线程就退出了,这是数据是不正确的),会对正在处理的同步数据造成破坏,出现不一致结果。)

8)利用Thread.interrupt中止线程是安全的,但interrupt并不是立即停止,而是在当前线程中打一个停止标记

9)this.interrupted判断当前线程是否是中断状态,执行后具有将状态标志清除的功能,也就是说,连续两次执行this.interrupted,第二次得到的结果必定是false;this.isInterrupted判断当前线程是否是中断状态,执行后不具有将状态标志清除的功能

10)停止线程的方法:

  A)线程里是一个for循环,for循环一直判断线程是否interrupted,如果被外部中止了,break结束for循环,然后继续走for后面的语句,然后run方法就结束了;

  B)线程里是一个for循环,for循环一直判断线程是否interrupted,如果被外部中止了,抛出一个异常,catch住,然后就结束run方法了;

  C)线程在sleep的时候,外部执行interrupt方法中止线程,会抛InterruptExpection,可以catch这个异常,然后退出;

  D)暴力停止,Thread.stop;

  E)使用return停止线程

推荐用抛异常的形式结束线程,这样可以保证线程退出这个事件一直传播出去

11)suspend暂停线程,resume恢复线程。suspend和resume如果使用不当,极容易造成线程永远暂停,暂停后,线程的同步锁是无法被释放的

12)yield方法是放弃当前的CPU资源,将它让给其他任务去占用CPU执行时间,但放弃时间不确定,有可能刚刚放弃,马上就获得了CPU时间片

13)在操作系统中,可以给线程确定优先级,优先级较高的线程得到的CPU资源较多,为线程设置优先级,有利于线程规划器确定下一次选择哪个线程来优先执行。setPriorty方法可以设置线程的优先级,在1-10中间选择。线程优先级具有继承特性,例如A线程启动B线程,B线程与A线程的优先级相同。优先级具有规则性,高优先级的线程总是大部分先执行完,但不代表高优先级的线程全部先执行完;优先级具有随机性,优先级较高的线程不见得每次都先执行完

14)守护线程是一种特殊的线程,当进程中不存在非守护线程了,守护线程就退出了。典型的线程是垃圾回收线程,当进程中没有非守护线程(用户线程)时,就没有垃圾回收的意义了,垃圾回收线程就自行销毁了。

Java-关于Thread的更多相关文章

  1. java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍

    (原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: ...

  2. Java 6 Thread States and Life Cycle.

    Ref: Java 6 Thread States and Life Cycle This is an example of UML protocol state machine diagram sh ...

  3. 对java的Thread的理解

    最好不适用线程的子线程,直接调用线程,然后用rannable接口 然后如果要公用一个参数,就是公用资源的时候,一定要在run方法的前面加上synchronized 例子 猫和狗喝同一杯水(共用资源的问 ...

  4. Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)

    线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的 ...

  5. 转载:java中Thread.sleep()函数使用

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  6. 线上zk节点报org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:187) at java.lang.Thread.run(libgcj.so.10)

    线上zk做配置管理,最近突然发现两个节点一直在刷下边 java.nio.channels.CancelledKeyException    at gnu.java.nio.SelectionKeyIm ...

  7. [Java多线程]-Thread和Runable源码解析

    多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...

  8. Java并发--Thread类详情

    以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法 转载原文链接:http://www.cnblogs.com/dolphin0520/p/3920357.html 一 ...

  9. Java 线程--继承java.lang.Thread类实现线程

    现实生活中的很多事情是同时进行的,Java中为了模拟这种状态,引入了线程机制.先来看线程的基本概念. 线程是指进程中的一个执行场景,也就是执行流程,进程和线程的区别: 1.每个进程是一个应用程序,都有 ...

  10. java之Thread Dump分析

    什么是Thread Dump Thread Dump是非常有用的诊断Java应用问题的工具.每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机 ...

随机推荐

  1. VB中Winsock连续发送出现接收不到的异常问题解决方法

    VB里面用WINSOCK进行一对多连接的TCP连接时,经常需要群发消息给所有已连接的客户端.代码类似如下: Option Explicit Dim bytMsg() As Byte Private S ...

  2. Web 录音

    所需文件下载地址 链接:https://pan.baidu.com/s/1Dzbv8gPUZJ3T8Fe02hOJvg 提取码:zbgt py文件 from flask import Flask, j ...

  3. redis日志格式

    在redis.conf中,在大概65行左右有个loglevel # 指定日志记录级别# Redis总共支持四个级别:debug.verbose.notice.warning,默认为verbose# d ...

  4. Java Base64 加解密

    public class base64EncryAndDecry { public static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWX ...

  5. 20181207_Second_小结

    1. 上下 200*200 盒子的重叠,切记用 absolute 绝对定位 为最佳解决方案 2. 移动端多使用 粘连布局 <!DOCTYPE html> <html> < ...

  6. 1. js数据类型_对象_函数_内存

    1. js数据类型有哪些? 基本(值)类型 Number ---- 任意数值 String ---- 任意字符串 Boolean ---- true/false undefined ---- unde ...

  7. layer过去的时间不能选择,只能选择未来的时间 LayUI中的时间日期控件,设置时间范围,

    默认Layui中的时间控件显示如下: 我当时系统时间是2018-06-07, 我需要做的是2018-06-07之后过去的时间不能选择 <p><span>时间范围:</sp ...

  8. php发送短信验证码

    业务: 手机端点击发送验证码,请求发送到php端,由php调用榛子云短信http://smsow.zhenzikj.com的短信接口,生成验证码并发送. SDK下载: http://smsow.zhe ...

  9. servlet 拦截器 (filter)

    使用: 创建一个类实现javax.servlet.Filter接口,并重写接口中所有的方法: 在web.xml配置所需要拦截的请求. 过程说明: 1>在应用启动的时候就进行装载Filter类(与 ...

  10. jqgrid 插件的使用

    首先设定table的id和分页 <div id=”gridList”></div>   //table名称 <div id=”page”></div>  ...