java多线程的常用方法
介绍一些多线程中的常用方法:
//启动方法
a.start(); //返回代码正在被哪个线程调用的信息
a.currentThread(); //返回线程的名字
a.currentThread().getName(); //判断线程是否处于存活状态
a.isAlive(); //线程延迟 单位毫秒
a.sleep(); //取得线程的唯一标识
a.getId();
暂停继续:
//让线程以毫秒进入阻塞状态,等到时间一过,正常运行
a.sleep(300);
suspend()和 resume()方法:
线程的暂停和恢复,使用 suspend()方法使线程进入阻塞状态,不可以自动恢复,可使用resume()方法将线程唤醒。
yield()方法:
yield()方法的作用是放弃当前CPU资源,将他让给其他的任务去使用,但是放弃的时间是不确定的,有可以刚刚放弃,马上又得到CPU的使用时间。
下面写段代码举个例子:
不使用yield()方法执行:
public class Test01 extends Thread {
@Override
public void run() {
super.run();
long beginTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println(i++);
}
long endTime = System.currentTimeMillis();
System.out.println("执行完成,用时:" + (endTime - beginTime) + "毫秒!");
}
public static void main(String[] args) {
Test01 thread = new Test01();
thread.start();
}
}
//打印结果
9990
9992
9994
9996
9998
执行完成,用时:37毫秒!
使用yield()方法执行:
public class Test01 extends Thread {
@Override
public void run() {
super.run();
long beginTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
//使用yield()方法放弃CPU时间
this.yield();
System.out.println(i++);
}
long endTime = System.currentTimeMillis();
System.out.println("执行完成,用时:" + (endTime - beginTime) + "毫秒!");
}
public static void main(String[] args) {
Test01 thread = new Test01();
thread.start();
}
}
//打印结果
9984
9986
9988
9990
9992
9994
9996
9998
执行完成,用时:241毫秒!
事实证明,执行yield()方法把CPU时间给其他程序,会使此程序执行效率变慢。
java多线程的常用方法的更多相关文章
- java多线程的常用方法(以及注意事项)
/* * 线程的常用方法 * 1.start(); * 2.run(); * 3.sleep(int millsecond); * 4.isAlive(); -->判断线程是否还在运行 * 5. ...
- Java多线程-----Thread常用方法
1.public Thread(Runnable target,String name) 创建一个有名称的线程对象 package com.thread.mothed; public class Th ...
- Java多线程常用方法的使用
Java多线程的常用方法基本分为:获取当前线程的操作,线程休眠sleep()方法,线程让步yield()方法,等待其他线程终止join()方法,线程停止的一系列方法. 一.获取当前线程的操作 1. ...
- Java多线程(一) 多线程的基本使用
在总结JDBC数据库连接池的时候,发现Java多线程这块掌握得不是很好,因此回头看了下多线程的内容.做一下多线程模块的学习和总结,稳固一下多线程这块的基础.关于多线程的一些理论知识,这里不想啰嗦太多, ...
- Java多线程中的常用方法
本文将带你讲诉Java多线程中的常用方法 Java多线程中的常用方法有如下几个 start,run,sleep,wait,notify,notifyAll,join,isAlive,current ...
- Java多线程并发02——线程的生命周期与常用方法,你都掌握了吗
在上一章,为大家介绍了线程的一些基础知识,线程的创建与终止.本期将为各位带来线程的生命周期与常用方法.关注我的公众号「Java面典」了解更多 Java 相关知识点. 线程生命周期 一个线程不是被创建了 ...
- Java多线程干货系列—(一)Java多线程基础
前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...
- Java多线程总结之线程安全队列Queue
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非 ...
- Java多线程干货系列(1):Java多线程基础
原文出处: 嘟嘟MD 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程 ...
随机推荐
- javascript的常用操作(三)
$.ajax 中的contentType 在 cnodejs.org 论坛中有一个问题,让我也很奇怪,说是 $.ajax 设置数据类型 applicaiton/json之后,服务器端(express) ...
- c#中反射技术在Unity中的运用
反射技术给类赋值的好处就是可以简化代码,封装的好处就显而易见了.最直接的用途就是用在在显示配置文件的时候,个人习惯性做法是做一个VO来存储需要的数据,其代码如下: internal class Bas ...
- Unity中的输入
目录 移动平台的输入 触摸 触摸相关的函数 触摸的一个示例 重力加速器 在Unity中访问重力加速器的信息 重力加速器示例 虚拟键盘 其他输入 传统的输入 鼠标,键盘,控制杆,手柄 虚拟控制轴(Vir ...
- ionic文本颜色
需添加"ion-text"使"color='light'"生效 <div text-center ion-text color="light&q ...
- hihoCoder #1044 : 状态压缩·一 (清垃圾)
题意: 某车厢有一列座位,共有n个位置,清洁工要在这n个位置上清垃圾,但是不能全部位置都清理,只能选择部分.选择的规则是,连续的m个位置内,不能够清理超过q个,也就是说从第1~m个位置最多可以清q个, ...
- 关于wp8.1 runtime模式下面的摄像头调用拍照问题和应用生命周期问题
现在的msdn文档,还找不到详细的wp8.1的摄像头拍照文档,只有一个序列拍照,类似九连拍的文档,而且这文档感觉就是windows8.1搬过来应付的,wp8.1模式,只要有一个地方处理不好,手机就会死 ...
- IOS 设置子控件的frame(layoutSubviews and awakeFromNib)
如果控件是通过xib或者storyboard创建出来的就会调用该方法 - (void)awakeFromNib :该方法只会调用一次 // 如果控件是通过xib或者storyboard创建出来的就 ...
- hdu-2256 Problem of Precision---矩阵快速幂+数学技巧
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2256 题目大意: 题目要求的是(sqrt(2)+sqrt(3))^2n %1024向下取整的值 解题 ...
- 前端知识体系之CSS及其预处理器SASS/LESS
如果你是个前端设计师,很多时候我们都在写CSS,CSS是定义页面样式的脚本,并不是一种编程语言,只是一行行单纯的描述页面元素的样子,如果对英语熟练的话,它像说话一样简单,这里举个简单的例子: body ...
- 【BZOJ4033】[HAOI2015] 树上染色(树形DP)
点此看题面 大致题意: 给你一棵点数为N的带权树,要你在这棵树中选择K个点染成黑色,并将其他的N-K个点染成白色.要求你求出黑点两两之间的距离加上白点两两之间距离的和的最大值. 树形\(DP\) 这道 ...