JAVA多线程学习3--线程一些方法
一、通过sleep方法睡眠
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。
二、线程优先级
线程具有优先级,范围为1-10。
MAX_PRIORITY线程可以具有的最高优先级。int类型,值为10.
MIN_PRIORITY线程可以具有的最低优先级。int类型,值为1.
NORM_PRIORITY分配给线程的默认优先级。int类型,值为5.
可以通过setPriority()设置线程的优先级。
三、yield方法让出cpu
yield方法线程高风亮节让出CPU一次。
四、停止线程的方法
stop()方法已经被弃用,原因是不太安全。API文档中给出了具体的详细解释。
通过interrupted()方法打断线程。不推荐。
通过共享变量结束run()方法,进而停止线程。如实例
public class ThreadInterrupt {
public static void main(String []args){
Runner run = new Runner();
run.start();
try {
Thread.sleep();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
//run.stop();//已经废弃的方法,不建议使用,过于粗暴
//run.interrupt(); //抛出异常,但是在异常处理中写业务显然不合适,不建议使用
run.flag=false;//建议使用的停止线程的方法
}
}
class Runner extends Thread{
boolean flag = true;
public void run(){
/* while(true){
System.out.println(new Date()+"----");
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("Interrupted");
return;
}
}
*/
while(flag){
System.out.println(new Date()+"----");
try {
sleep();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("Interrupted");
return;
}
}
}
}
五、Thread的sleep()方法与Object类的wait()方法比较
sleep()方法使线程休眠一定时间,休眠期间线程依然拥有之前获得的锁。而wait()方法使线程处于等待,等待期间线程不再拥有之前获得的锁。当其他进程通过notify唤醒进程后,线程重新去抢资源的锁。wait()方法一般与notify()或notifyAll()方法一起出现。
JAVA多线程学习3--线程一些方法的更多相关文章
- Java多线程学习篇——线程的开启
随着开发项目中业务功能的增加,必然某些功能会涉及到线程以及并发编程的知识点.笔者就在现在的公司接触到了很多软硬件结合和socket通讯的项目了,很多的功能运用到了串口通讯编程,串口通讯编程的安卓端就是 ...
- Java多线程学习(三)---线程的生命周期
线程生命周期 摘要: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞 ...
- JAVA多线程学习七-线程池
为什么用线程池 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3> ...
- Java多线程学习总结--线程概述及创建线程的方式(1)
在Java开发中,多线程是很常用的,用得好的话,可以提高程序的性能. 首先先来看一下线程和进程的区别: 1,一个应用程序就是一个进程,一个进程中有一个或多个线程.一个进程至少要有一个主线程.线程可以看 ...
- Java多线程学习(二)---线程创建方式
线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总 ...
- JAVA多线程学习十一-线程锁技术
前面我们讲到了synchronized:那么这节就来将lock的功效. 一.locks相关类 锁相关的类都在包java.util.concurrent.locks下,有以下类和接口: |---Abst ...
- Java多线程学习之线程池源码详解
0.使用线程池的必要性 在生产环境中,如果为每个任务分配一个线程,会造成许多问题: 线程生命周期的开销非常高.线程的创建和销毁都要付出代价.比如,线程的创建需要时间,延迟处理请求.如果请求的到达率非常 ...
- Java多线程学习之线程的取消与中断机制
任务和线程的启动很容易.在大多数情况下我们都会让他们运行直到结束,或是让他们自行停止.但是,有时我们希望提前结束任务或是线程,可能是因为用户请求取消,或是线程在规定时间内没有结束,或是出现了一些问题迫 ...
- Java多线程学习总结--线程同步(2)
线程同步是为了让多个线程在共享数据时,保持数据的一致性.举个例子,有两个人同时取钱,假设用户账户余额是1000,第一个用户取钱800,在第一个用户取钱的同时,第二个用户取钱600.银行规定,用户不允许 ...
随机推荐
- C# 创建线程的简单方式:异步委托 .
定义一个委托调用的方法:TakesAWhile //定义委托要引用的方法 private static int TakesAWhile(int data, int ms) { Console.Writ ...
- 使用NuGet加载包,发现加载的dll都是最新版,原来少加了参数[-Version]
使用NuGet获取AutoMapper 发现无法正确加载包,项目版本是3.5,获取的dll版本较高,查资料发现可以通过 “-Version” 指定加载包版本 http://www.mamicode.c ...
- Linux下redis安装与使用
redis官网地址:http://www.redis.io/ 最新版本:2.8.3 在Linux下安装Redis非常简单,具体步骤如下(官网有说明): 1.下载 ...
- Blocks 推出矩阵公式。矩阵快速密
Blocks 设涂到第I块时,颜色A,B都为偶数的数量为ai,一奇一偶的数量为bi,都为奇数为ci, 那么涂到第i+1快时有 a[i+1]=2*a[i]+b[i]+0*c[i]; b[i+1]=2* ...
- LearnMVC5-AddAModel
本人是MVC新手,将从微软官网学习MVC并将看过的英文文档翻译成中文,由于本人英文水平不好,有翻译不准确.错误的地方万望指出,我看到后将会在第一时间修改.另外也希望这一系列文章能为后来者起到引导作用. ...
- CentOS 7 使用外部邮箱 发送邮件和附件—mail,mailx
1.查看软件包是否安装 [root@localhost ~]# rpm -qa|grep mail mailx-12.5-12.el7_0.x86_64 javamail-1.4.6-8.el7.no ...
- selenium遍历控件集合
场景:需要重复增加地址栏信息,如果地址信息超过了5个就不开始增加 如图: 1.找到控件集合,在遍历每个子元素,在进行选择 1.先找到最外层的div的控件集合 2.外层的css定位为: int star ...
- Linux Centos 怎么安装更新根证书实现支持https访问
其实很简单就是一个命令: mozroots --import --ask-remove 或者使用: sudo update-ca-certificates
- 深入浅出ExtJS 第三章 表格控件
3.1 表格的特性简介 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; >.表格由类Ext.grid.GridPanel定义,继承自 ...
- Android OpenGL ES(二)----平滑着色
直线或者三角形上的每个片段混合后的颜色可以用一个varying生成.我们不仅能混合颜色,还可以给varying传递任何值,OpenGL会选择属于那条直线的两个值,或者属于那个三角形的三个值,并平滑地在 ...