多线程:Executor、Sleep、Deamon、Yeild
Executor
Executor是接口,Executors是工厂类!
Executor 管理多个异步任务的执行,而无需程序员显式地管理线程的生命周期。这里的异步是指多个任务的执行互不干扰,不需要进行同步操作。
主要有三种 Executor:
- CachedThreadPool:一个任务创建一个线程;
- FixedThreadPool:所有任务只能使用固定大小的线程;
- SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。
public static void main(String[] args) {ExecutorService executorService = Executors.newCachedThreadPool();for (int i = 0; i < 5; i++) {executorService.execute(new MyRunnable());}executorService.shutdown();
}
Daemon
守护线程是程序运行时在后台提供服务的线程,不属于程序中不可或缺的部分。
当所有非守护线程结束时,程序也就终止,同时会杀死所有守护线程。
main() 属于非守护线程。
使用 setDaemon() 方法将一个线程设置为守护线程。
public static void main(String[] args) {Thread thread = new Thread(new MyRunnable());thread.setDaemon(true);
}
sleep()
Thread.sleep(millisec) 方法会休眠当前正在执行的线程,millisec 单位为毫秒。
sleep() 可能会抛出 InterruptedException,因为异常不能跨线程传播回 main() 中,因此必须在本地进行处理。线程中抛出的其它异常也同样需要在本地进行处理。
public void run() {try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}
}
yield()
对静态方法 Thread.yield() 的调用声明了当前线程已经完成了生命周期中最重要的部分,可以切换给其它线程来执行。该方法只是对线程调度器的一个建议,而且也只是建议具有相同或大于的优先级的其它线程可以运行。
public void run() {Thread.yield();
}
多线程:Executor、Sleep、Deamon、Yeild相关推荐
- 多线程----守护线程---Deamon
public final void setDaemon(boolean on) 守护线程(后台线程) setDaemon(boolean on):将该线程标记为守护线程或者用户线程.当主线程结束,守 ...
- 多线程EXecutor 柜架示例
2019独角兽企业重金招聘Python工程师标准>>> 代码: import java.util.concurrent.ExecutorService; import java.ut ...
- Java面试2018常考题目汇总
点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...
- apscheduler mysql_APScheduler (重点)
定时校正 需求: mysql和redis两个系统, mysql增加数据成功, redis未必添加成功, 这样两个系统的数据可能出现偏差, 所以需要定期对mysql和redis的数据进行同步 解决方案: ...
- 线程中task取消_Rust Async: async-task源码分析
async-std是rust异步生态中的基础运行时库之一,核心理念是合理的性能 + 用户友好的api体验.经过几个月密集的开发,前些天已经发布1.0稳定版本.因此是时候来一次深入的底层源码分析.asy ...
- python爬取b站搜索结果播放地址_如何利用Python快速爬取B站全站视频信息
B 站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆.不过 纸上得来终觉浅,绝知此事要躬行,我码故我在.最终爬取到数据总量为 760万 条. 准备工作 首先打开 B 站,随便在首页找一个视频点击进 ...
- tornado异步非阻塞实现方式
目录 tornado异步非阻塞实现方式 1.多线程 2.老版协程 3.新版协程 实验 1.完全阻塞,同步代码 2.老版本协程 3新版本协程 4 多线程+新版协程,线程函数失效 5.线程+不声明异步,可 ...
- 使用python实现高清壁纸批量下载
一.高清壁纸批量下载 1.概述 此代码是使用python多线程批量下载高清壁纸的一个小脚本,代码略为简陋. 此代码仅供学习与交流,请不要用于违法用途. import requests from lxm ...
- Java多线程面试准备:聊聊Executor框架
点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...
最新文章
- asp.net文件上传下载的简单实现
- TCP三次握手和四次断开
- 【学习笔记】平等博弈及常见的公平博弈类型
- 用科技共创美好:英特尔助力北京冬奥会新体验
- 不删除旧版本java_Linux 卸载旧版jdk 并安装新版jdk(转)
- Take C# 8.0 for a spin
- laravel5.5 php7,ubuntu 16.04+nginx+mysql+php7.1+laravel5.5环境
- 高清电脑手机壁纸任你选,每天不重样!
- iOS 编译后的Archiveing 界面在 Windows-organizer 下
- 【Matlab学习笔记】【编程实例】一(将两幅图像调整为相同的尺寸大小)
- 分享几个Python小技巧函数里的4个小花招 1
- mysql xtrabackup-v2_MySQL物理备份基础知识(基于xtrabackup2.4版本)
- 不爬山的人很少摔跤——Celeste蔚蓝的叙事理念与关卡设计(一)
- Java DataSource对象
- 如果已经安装过个人版Delphi2007,如何安装Delphi2007企业版
- 自然数、实数、整数、有理数的符号表示
- 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后打不开屏幕怎么办
- BOSS管账深度融合钉能力,打破业财数据壁垒实现数据互通
- 十大经典排序算法(图解与代码)——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序(Python and Java)
- 一些常用的判断预测、拟合、回归的精度评价函数和相关性评价函数