博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java Thread
阅读量:6219 次
发布时间:2019-06-21

本文共 1195 字,大约阅读时间需要 3 分钟。

hot3.png

线程分类----------------------------------

线程分为两种:

1.用户线程;即一般的线程
2.守护线程;这是一种特殊的线程,它的特性有“陪伴”的意思,当进程中不存在非守护线程,则守护线程自动销毁,例A线程中启动了B守护线程,那么B就会一直"陪伴"着A线程,如果A线程结束了,那么B线程也会自动的销毁。就是说启动守护线程的线程,才是守护的对象。

线程的优先级---------------------------

优先及高的线程得到cpu的资源将越多,也就越先执行这个线程

1.设置线程的优先级使用setPriority.java中线程优化级分为1-10个等级,jdk用三个常量来定义:

    MIN_PRIORITY = 1
    NORM_PRIORITY = 5
    MAX_PRIORITY = 10

2.线程有继承性,即A线程启动了B线程,那么B线程的优先级与A一样

线程安全问题-----------------------------------------

1.从jvm结构上看:在jvm中有个栈,这个栈是专门存在java线程的信息,而每个线程都有它们各自的领地。栈中主要存放的是方法的栈帧,每当调用一个方法时就产生出一个栈帧,当方法调用结束就将对应的栈帧弹出销毁。与其销毁的还有方法中调用的变量,所以说如果方法中都只有私有变量,那就不可能产生线程安全问题。

2.那也说线程安全问题存在于"实例变量"中,如果多个线程共同访问1个对象,才有可能出现线程的安全问题。

api---------------------------------------------

start 

    启动一个线程,但如果多次启动会抛出IllegalThreadStateException。要注意的是start启动的顺序不代表线程启动的顺序

currentThread

    返回调用该代码段的线程

isAlive 

    判断当前的线程是否处于活动状态(线程已经启动且尚未终止)

sleep 

    让当前“正在执行的线程”休眠,”正在执行线程“指this.currentThread()返回的线程

getId 

    取得线程的唯一标识

interrupt

    在当前线程中打上了一个停止标识,并不会立即停止线程

stop

    立即停止线程,是非常暴力且不安全。该方法已经被废弃,因为如果强制让线程停止则有可能使一些清理性的工作得不到完成。另外一个情况就是对锁定的对象进行了”解锁“,导致数据得不到同步的处理,出现数据不一致的问题。

suspend

    暂停线程,可以使用resume恢复线程

yield

    放弃当前的cpu资源,将它让给其他的任务去占用cpu执行时间,但放弃的时间不确定,有可能刚放弃又马上获得cpu的时间片。
     

转载于:https://my.oschina.net/u/2552286/blog/667926

你可能感兴趣的文章
Myeclipse代码提示及如何设置自动提示
查看>>
c/c++中保留两位有效数字
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
由String类的Split方法所遇到的两个问题
查看>>
Python3.4 12306 2015年3月验证码识别
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
自制操作系统Antz day11——实现shell(下)命令响应
查看>>
windows查看端口占用
查看>>
strongswan ikev2 server on ubuntu 14.04
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
Io流的概述
查看>>
App 卸载记录
查看>>
php长链接
查看>>
JavaScript变量和作用域
查看>>
Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源
查看>>
Substring with Concatenation of All Words
查看>>
JS 对象机制深剖——new 运算符
查看>>