美文网首页
线程与线程池总结

线程与线程池总结

作者: 快乐的小2缺 | 来源:发表于2019-11-12 10:08 被阅读0次

1) 线程的几种状态

·    初始状态:new Thread 进入初始状态

    ·可运行状态(就绪状态):调用线程的start方法,进入可运行状态

·    运行状态:OS选中,此进程获得cpu的时间片,该线程开始执行run方法,进入运行状态

·    阻塞状态:调用Thread.sleep方法(sleep结束进入就绪状态)、调用其他线程的join方法(其他线程执行结束进入就绪状态)、等待用户输入(用户输入完,进入就绪状态)等进入阻塞状态

·    死亡状态:run方法执行结束,进入死亡状态

图片来自网络

另外,线程执行过程中:

1、遇到同步锁Synchronized时,进入锁池队列;

2、调用wait方法,该进程进去等待序列,等待其他进程调用notify或者notifyAll唤醒

3、锁池队列的线程拿到对象锁时,线程进入就绪状态

4、调用Thread.yield()方法,让出cpu资源,进入就绪状态与其他线程一起竞争资源

2) 线程相关的几个方法

线程的方法:

Thread.sleep(long milSecond);静态方法,调用肯定是当前线程执行

Thread.yield(); 静态方法,调用肯定是当前线程执行

t.join()或者t.join(long milSecond); 成员方法,将cpu资源让给t,t执行完毕或者执行到milSecond时,进入就绪状态

对象方法:

obj.wait(); 调用线程进入等待队列

obj.notify(); 唤醒等待队列中监听该对象的某个线程进入锁池队列

obj.notifyAll(); 唤醒等待队列中监听该对象的所有线程进入锁池队列

3) 四种常用线程池:

ExecutorService是Java提供的用于管理线程池的类。该类的两个作用:控制线程数量和重用线程

·Executors.newCacheThreadPool():

可缓存线程池,先查看池中有没有以前建立的线程,如果有,就直接使用。如果没有,就建一个新的线程加入池中,缓存型池子通常用于执行一些生存期很短的异步型任务

·Executors.newSingleThreadExecutor():

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

·Executors.newFixedThreadPool(int n):

创建一个可重用固定个数的线程池,以共享的无界队列方式来运行这些线程。

·Executors.newScheduledThreadPool(int n):

创建一个定长线程池,支持定时及周期性任务执行

ScheduledExecutorService scheduledExecutorService=Executors.newScheduledThreadPool(10);

延迟三秒执行:

scheduledExecutorService.schedule(new Runnable() {

@Override

public void run() {

}

},3,TimeUnit.SECONDS);

60秒后开始任务,每执行完一个任务后10秒开始下个任务:

scheduledExecutorService.scheduleWithFixedDelay(new Runnable() {

@Override

public void run() {

}

},60,10,TimeUnit.SECONDS);

60秒后开始任务,每隔10秒开始一个任务:

scheduledExecutorService.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

}

},60,10,TimeUnit.SECONDS);

相关文章

  • 线程池

    线程、多线程与线程池总结[https://www.jianshu.com/p/b8197dd2934c]: 线程池...

  • 反射、注解与依赖注入总结

    上一篇【线程、多线程与线程池总结】中主要记录线程、多线程相关概念,侧重于线程的Future使用与线程池的操作;同样...

  • 线程池创建和相关知识

    线程池创建(单例):Android线程池得要这么用 - 简书 线程池相关知识:Android开发之线程池使用总结 ...

  • Java线程池技术总结

    Java线程池技术总结 四种内置线程池 newSingleThreadExecutor 创建一个单线程的线程池。这...

  • 线程与线程池总结

    1) 线程的几种状态 ·初始状态:new Thread 进入初始状态 ·可运行状态(就绪状态):调用线程的star...

  • Java学习Day14

    今日学习内容总结 线程池 Lambda表达式 线程池 线程池: 其实就是一个容纳多个线程的容器,其中的线程可以反复...

  • 线程池解析第一章-源码解析

    线程池解析第一章-源码解析线程池解析第二章-线程池源码问题总结 线程池基本介绍 为什么要使用线程池 对于系统和服务...

  • java线程状态和线程池

    本节总结线程相关知识:线程状态和线程池。1.线程的五个状态 关于如何终止线程,以下仅供参考: 2.线程池

  • Java并发 之 线程池系列 (1) 让多线程不再坑爹的线程池

    背景线程池的来由什么是线程池背景总结 用法通过Executors创建线程池Executors及其服务的类Execu...

  • 线程池与Threadlocal

    线程池与Threadlocal 线程池: 线程池是为了使线程能够得到循环的利用,线程池里面养着一些线程,有任务需要...

网友评论

      本文标题:线程与线程池总结

      本文链接:https://www.haomeiwen.com/subject/imjfictx.html