![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 52
22岁,是学生
这个作者很懒,什么都没留下…
展开
-
线程池ExecutorService
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 线程池就是一个容纳多个线程的容器,池中的线程可以反复使用,省去了频繁创建线程对象的操作,节省了大量的时间和资源。 线程池的好处: 降低资源消耗 提高响应速度 提高线程的可管理性 Java中共包含四种线程池:缓存线程池、定长线程池、单线程线程池、周期性任务定长线程池。 缓存线程池: 缓存线程池的长度无限制。 执行流程: 判断线程池是否存在空闲原创 2021-04-07 19:42:24 · 154 阅读 · 1 评论 -
线程创建的三种方法
最常用的两种方法——继承Thread类和实现Runnable接口 1.继承Thread类 class MyThread extends Thread{} public static void main(String[] args){ Thread t = new MyThread("线程名"); t.start(); } 2.实现Runnable接口 class MyRunnable implements Runnable{} public static void main(原创 2021-04-07 17:07:45 · 80 阅读 · 2 评论 -
线程的六种状态
具体来说: 1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态。 2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。 该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。 ...原创 2021-04-07 16:51:47 · 187 阅读 · 1 评论 -
多线程通信——生产者和消费者
假设在一个饭店中有一个厨师(生产者)、一个服务员(消费者),还有食物三类。 为了更明显的看到生产者消费者两个线程合作时产生的问题,先在在设置食物属性中间使其休眠。 //食物 static class Food{ private String name; private String taste; //为了更明显的看到生产者消费者不加休眠产生的问题,在设置中间使其休眠 public void setNameAndTaste(String name, String原创 2021-04-07 16:37:28 · 79 阅读 · 1 评论