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 线程 ...
随机推荐
- 利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能
事由: 这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别. 顺带提一下: 啊啊啊啊 等我仔细看文档的时候文档 发现它 ...
- Javascript Functions
Javascript 全局对象 全局属性和函数可用于所有内建的Javascript对象 顶层函数(全局函数) decodeURI()解码某个编码的URI. decodeURIComponent()解码 ...
- 跨平台移动开发phonegap/cordova 3.3全系列教程-结合asp.net/jqmboile
遠程app配置 把編譯後的www資料夾,復制到遠程地址(目錄結構不要改變), 例如:建議使用app-framework 1.加入jquery mobile1.4点击打开链接 2.加入app-frame ...
- meterpreter > migrate 1548
1548 1500 explorer.exe x86 0 LIXIULI-VCS86VR\test C:\WINDOWS\Explorer.EXE 19 ...
- 文件IO——将文件dfs的文件内容第三个字节之后的内容复制到文件dfd中
/* 使用文件IO将文件fds中的内容复制到文件fdd中去 1.创建两个文件描述符 2.使用open()方法分别以只读只写方式将文件描述符符文件连接 3.将读位置后移三位 4.将fds内容存储到缓冲区 ...
- 轻松搞定Struts 2:三步走上手小入门
零.Struts 2是啥? SSH.SSM.SSI如雷贯耳,Struts 2 —— 是的,就这样了... 一.Hello Struts2 1.核心包 2.struts.xml核心控制器配置 <f ...
- Redis安装配置及在Python上的应用
最近在使用Kazoo(开源电话系统) API时,一次请求的处理需要调用几次API,只为了得到一个name和id的对应关系,耗时非常大,开始想使用一种简单的实现,直接将对应关系保存到静态类的静态变量中, ...
- BZOJ 3873: [Ahoi2014]拼图
BZOJ 3873: [Ahoi2014]拼图 标签(空格分隔): OI-BZOJ OI-DP Time Limit: 10 Sec Memory Limit: 256 MB Description ...
- SCSI add-single-device and remove-single-device
众所周知,SATA和SCSI是支持热插拔的,但是新装了这类支持热插拔的驱动器,系统不会马上识别的,往往我们需要重启系统来识别,但是有另外一种方法可以很方面的让系统识别新的设备. 作为系统管理员,需要了 ...
- 简单ssh
#!/usr/bin/env python #-*- coding:utf-8 -*- # datetime:2019/5/22 14:20 # software: PyCharm #服务端 impo ...