Java-关于Thread
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的更多相关文章
- java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍
(原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: ...
- 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 ...
- 对java的Thread的理解
最好不适用线程的子线程,直接调用线程,然后用rannable接口 然后如果要公用一个参数,就是公用资源的时候,一定要在run方法的前面加上synchronized 例子 猫和狗喝同一杯水(共用资源的问 ...
- Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)
线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的 ...
- 转载:java中Thread.sleep()函数使用
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- 线上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 ...
- [Java多线程]-Thread和Runable源码解析
多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...
- Java并发--Thread类详情
以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法 转载原文链接:http://www.cnblogs.com/dolphin0520/p/3920357.html 一 ...
- Java 线程--继承java.lang.Thread类实现线程
现实生活中的很多事情是同时进行的,Java中为了模拟这种状态,引入了线程机制.先来看线程的基本概念. 线程是指进程中的一个执行场景,也就是执行流程,进程和线程的区别: 1.每个进程是一个应用程序,都有 ...
- java之Thread Dump分析
什么是Thread Dump Thread Dump是非常有用的诊断Java应用问题的工具.每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机 ...
随机推荐
- haskell实现简易计算器
> module Main where > import System.IO > import Data.Char > import Control.Monad > im ...
- Node.js_密码明文_密文_加密库_sha1
加密库 sha1 加密模块,能够将指定 明文 加密成一个长度相等的 密文 let pwd = 'qwe123456'; const secret = sha1(pwd); 同样的明文,加密得到同样的密 ...
- vue_条件渲染_v-if_v-else_v-show
data: { ok: true flag: false } 1. 成对出现的 v-if 和 v-else 原理是: 标签的删除与重新创建 ,有些情况必须用 v-if <p v-if=" ...
- kafka安装与测试
基于linux-Centos7.0环境先进行测试学习 Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic, Topic即主题,通过对消息指定主题可以将消 ...
- 六、web应用与Tomcat
软件系统体系结构 1 常见软件系统体系结构B/S.C/S 1.1 C/S l C/S结构即客户端/服务器(Client/Server),例如QQ: l 需要编写服务器端程序,以及客户端程序,例如我们安 ...
- MVC 向页面传值方式总结(1)
ViewData传值. HomeController.cs Co de: public ActionResult Index() { ViewData["Title" ...
- 构建Dubbo-2.0.7源码
一. 下载源码: git clone --branch dubbo-2.0.7 https://github.com/apache/incubator-dubbo.git 二. 下载依赖 git cl ...
- EE4218 / EE4216 Faculty of Science and Engineering
Faculty of Science and EngineeringDepartment of Electronic and ComputerEngineeringEnd of Semester As ...
- Linux系统(四)LVS集群负载均衡NAT模式
序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...
- Log print(Android)
Log.v("MyTag", "This is Verbose."); Log.d("MyTag", "This i ...