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相关推荐

  1. 多线程----守护线程---Deamon

    public final void setDaemon(boolean on) 守护线程(后台线程) setDaemon(boolean on):将该线程标记为守护线程或者用户线程.当主线程结束,守 ...

  2. 多线程EXecutor 柜架示例

    2019独角兽企业重金招聘Python工程师标准>>> 代码: import java.util.concurrent.ExecutorService; import java.ut ...

  3. Java面试2018常考题目汇总

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  4. apscheduler mysql_APScheduler (重点)

    定时校正 需求: mysql和redis两个系统, mysql增加数据成功, redis未必添加成功, 这样两个系统的数据可能出现偏差, 所以需要定期对mysql和redis的数据进行同步 解决方案: ...

  5. 线程中task取消_Rust Async: async-task源码分析

    async-std是rust异步生态中的基础运行时库之一,核心理念是合理的性能 + 用户友好的api体验.经过几个月密集的开发,前些天已经发布1.0稳定版本.因此是时候来一次深入的底层源码分析.asy ...

  6. python爬取b站搜索结果播放地址_如何利用Python快速爬取B站全站视频信息

    B 站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆.不过 纸上得来终觉浅,绝知此事要躬行,我码故我在.最终爬取到数据总量为 760万 条. 准备工作 首先打开 B 站,随便在首页找一个视频点击进 ...

  7. tornado异步非阻塞实现方式

    目录 tornado异步非阻塞实现方式 1.多线程 2.老版协程 3.新版协程 实验 1.完全阻塞,同步代码 2.老版本协程 3新版本协程 4 多线程+新版协程,线程函数失效 5.线程+不声明异步,可 ...

  8. 使用python实现高清壁纸批量下载

    一.高清壁纸批量下载 1.概述 此代码是使用python多线程批量下载高清壁纸的一个小脚本,代码略为简陋. 此代码仅供学习与交流,请不要用于违法用途. import requests from lxm ...

  9. Java多线程面试准备:聊聊Executor框架

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

最新文章

  1. asp.net文件上传下载的简单实现
  2. TCP三次握手和四次断开
  3. 【学习笔记】平等博弈及常见的公平博弈类型
  4. 用科技共创美好:英特尔助力北京冬奥会新体验
  5. 不删除旧版本java_Linux 卸载旧版jdk 并安装新版jdk(转)
  6. Take C# 8.0 for a spin
  7. laravel5.5 php7,ubuntu 16.04+nginx+mysql+php7.1+laravel5.5环境
  8. 高清电脑手机壁纸任你选,每天不重样!
  9. iOS 编译后的Archiveing 界面在 Windows-organizer 下
  10. 【Matlab学习笔记】【编程实例】一(将两幅图像调整为相同的尺寸大小)
  11. 分享几个Python小技巧函数里的4个小花招 1
  12. mysql xtrabackup-v2_MySQL物理备份基础知识(基于xtrabackup2.4版本)
  13. 不爬山的人很少摔跤——Celeste蔚蓝的叙事理念与关卡设计(一)
  14. Java DataSource对象
  15. 如果已经安装过个人版Delphi2007,如何安装Delphi2007企业版
  16. 自然数、实数、整数、有理数的符号表示
  17. 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后打不开屏幕怎么办
  18. BOSS管账深度融合钉能力,打破业财数据壁垒实现数据互通
  19. 十大经典排序算法(图解与代码)——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序(Python and Java)
  20. 一些常用的判断预测、拟合、回归的精度评价函数和相关性评价函数

热门文章

  1. KindEditorckplayer的简单结合
  2. Centos 6.5 64位双网卡绑定
  3. 待删除未删除 问题解决
  4. asp.net 页面之间跳转的几种方法及区别(转)
  5. 【机器学习】改善LBP特征提高SVM的可分性的经验总结(一)
  6. Web推流,Webrtc网页推流rtmp在教学直播录制中应用
  7. kafka分区(partition)和和分组(group)
  8. matlab强制数据类型转换
  9. Caffe官方教程翻译(5):Classification: Instant Recognition with Caffe
  10. 5kyu k-Primes