Java多线程(四)java中的Sleep方法
点我跳过黑哥的卑鄙广告行为,进入正文。
Java多线程系列更新中~
正式篇:
- Java多线程(一) 什么是线程
- Java多线程(二)关于多线程的CPU密集型和IO密集型这件事
- Java多线程(三)如何创建线程
- Java多线程(四)java中的Sleep方法
- Java多线程(五)线程的生命周期
番外篇(神TM番外篇):
Thread类为睡眠线程提供了两种方法:
- public static void sleep(long miliseconds)抛出InterruptedException
- public static void sleep(long miliseconds,int nanos)抛出InterruptedException
参数声明:
- miliseconds-以毫秒为单位的睡眠时间。
- nanos-这是0-999999额外纳秒的睡眠时间。
用法示例
1.不睡眠的情况
public class Multi extends Thread{
public void run() {
for(int i=1; i<1000; i++) {
//try {
// Thread.sleep(500);
//}catch (InterruptedException e) {
// e.printStackTrace();
//}
System.out.println(i);
}
}
public static void main(String[] args) {
Multi t1 = new Multi();
Multi t2 = new Multi();
t1.start();
t2.start();
}
}
输出情况(每台计算机不一样,每次运行也会不一样,我截取部分数据分析)
t1: 1、2、3、4、5、6、7、8、9、10
t2: 1、2、3、4、5、6、7、8
t1: 11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27、28、29、30
……
可以看出,这两个线程的确是交替执行的。JAVA采用抢占式线程调度,也就是每个线程由系统来分配时间,线程的切换并不由线程本身决定。
2. 线程睡眠的情况
public class Multi extends Thread{
public void run() {
for(int i=1; i<1000; i++) {
try {
Thread.sleep(500);
}catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
}
}
public static void main(String[] args) {
Multi t1 = new Multi();
Multi t2 = new Multi();
t1.start();
t2.start();
}
}
这个输出就是严格的一个一次的交替原则。
t1: 1
t2: 1
t1: 2
t2: 2
t1: 3
……
这是因为Sleep()使得当前线程进入阻塞状态,系统便调用了另一线程,循环往复,便出现了上面的输出结果。那么,什么情况阻塞,只有Sleep吗?这就引出了线程的生命周期。
Java多线程(四)java中的Sleep方法的更多相关文章
- Java 多线程基础(九)join() 方法
Java 多线程基础(九)join 方法 一.join() 方法介绍 join() 定义 Thread 类中的,作用是:把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.如:线 ...
- java 执行 jar 包中的 main 方法
java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...
- java 多线程四
java 多线程一 java 多线程二 java 多线程三 java 多线程四 一个生产者,消费者的例子: import java.util.Stack; /** * Created by root ...
- “全栈2019”Java第四十八章:重写方法Override
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- java多线程(四)-自定义线程池
当我们使用 线程池的时候,可以使用 newCachedThreadPool()或者 newFixedThreadPool(int)等方法,其实我们深入到这些方法里面,就可以看到它们的是实现方式是这样的 ...
- Java多线程(四) —— 线程并发库之Atomic
一.从原子操作开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始). 很多情况下 ...
- 关于Java多线程(JAVA多线程实现的四种方式)
Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Cal ...
- Java多线程--实现同步的9种方法
我们通常说的保持同步,其实就是对共享资源的保护.在单线程模型中, 我们永远不用担心"多个线程试图同时使用同一个资源的问题", 但是有了并发, 就有可能发生多个线程竞争同一个共享资源 ...
- java 多线程:Thread 并发线程: 方法同步synchronized关键字,与static的结合
1.方法内的变量是安全的 方法内定义的变量,每个变量对应单独的内存变量地址,多个线程之间相互不影响.多个线程之间的变量根本没有一毛钱关系 public class ThreadFuncVarSafe ...
- java.util.Stack类中的peek()方法
java.util.stack类中常用的几个方法:isEmpty(),add(),remove(),contains()等各种方法都不难,但需要注意的是peek()这个方法. peek()查看栈顶的对 ...
随机推荐
- oracle10G/11G官方迅雷下载地址合集
原文链接:https://blog.csdn.net/zlsunnan/article/details/8058235 ORACLE11GR2 Oracle Database 11g Release ...
- mysqldump备份(Windows)
先说下思路,每天凌晨1点备份线上云服务器上的MySQL数据库,将备份的sql文件拷贝下来. 第一步:通过搜索引擎搜索相关可借鉴的文章.搜索关键字"Windows MySQL 备份" ...
- 第一册:lesson eighty three.
原文:Going on holiday. A:Hello Sam, come in. B:Hi,Sam.We are having lunch. Do you want to have lunch w ...
- 今天给大家补充一下 background 用法
补充一个知识点 1,浏览器默认字体大小是font-size:16px:谷歌最小字体是10px,其他浏览器是12px 2. 选择器 通配符选择器 * 表示 3.background 背景 ...
- Java中的强引用和弱引用
旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81114944 一.强引用 如下是强引用的经典 ...
- 8.异常_EJ
第57条: 只针对异常情况才使用异常 异常是为了在异常情况下使用而设计的,不要将它们用于普通的控制流,也不要编写迫使它们这么做的API. 第58条: 对可恢复的情况使用受检异常,对编程错误使用运行时异 ...
- wp rest api 授权方法步骤(使用JWT Authentication插件)
环境:wordpress 4.7 以上,WP自带的 rest api v2 目标:使用javascript与wp rest api交互,其中编辑.新增.删除等需要Oauth认证授权 方法: 步骤一: ...
- idea代码快捷
idea代码快捷:main函数快捷:psvmfor循环快捷:fori.foreach系统输出快捷:sout.serr 更多的提示可以按Ctrl+ J 进行查看 更改快捷:File-->Setti ...
- mac gulp: command not found
mac下执行gulp的时候报错:gulp: command not found 1.查看npm的安装目录 npm root 2.如果不是/usr/local , 说明未全局安装,执行 sudo npm ...
- 向后台提交数据:通过form表单提交数据需刷新网页 但通过Ajax提交数据不用刷新网页可通过原生态Ajax或jqueryAjax。Ajax代码部分
原生态Ajax提交表单:需要借助XMLHttpRequest对象的open,要收通过post发送请求还要setRequsetHeader,然后把数据发送给后端,代码如下 目录结构 index.py代码 ...