![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 81
木木偏高
这个作者很懒,什么都没留下…
展开
-
Java线程池的使用
1.线程池就是一个容器,可以容纳多个线程,可以反复使用,提高了线程的使用效率。2.通过Executors提供四种线程池,分别为:2.1 newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。2.2 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。2.3 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。2.4 newSin原创 2020-11-18 11:14:57 · 106 阅读 · 0 评论 -
基于Java多线程之间的通信关系的案列实现-----卖包子(并发线程)
通过分析需求,我们可以得知我们需要创建2个线程类,包子铺和吃包子的两个线程类。因为包子铺和吃包子的都是同一个包子,所以这里将包子作为对象锁。1.创建一个包子类,设置包子的属性/** * @author jianyeli */public class Baozi { String pi; String xian; boolean flag = true; }2.创建包子铺的线程类/** *包子铺是一个线程类,继承Thread设置线程任务为做包子 * 对包子的状态进行判原创 2020-11-17 22:13:31 · 349 阅读 · 3 评论 -
Java多线程之间的唤醒机制
等待与唤醒机制线程之间的通信可以有效的利用资源,让线程之间的活动尽然有序,在线程之间的通信常用的方法有:对象锁.wait();//让线程进入等待Block状态对象锁.notify();//唤醒Block中的线程对象锁.notifyAll();//唤醒所有的线程注意事项:wait和notify方法只能用于同一个对象锁,用在同步代码块中,同步方法中,写在同步代码块中。...原创 2020-11-17 22:00:55 · 447 阅读 · 0 评论 -
解决线程安全问题的第三种方法:Lock锁
1.在以上中,使用synchronized我们使用同步方法和同步代码块将线程安全问题锁住,每次只能执行一个线程,但我们并不知道它是何时上锁的,何时解锁的,这里我们将使用Lock锁。2.Lock锁是在Current.Lock包下的,是一个接口,我们需要实现ReentrantLock。3.使用Lock方法上锁,写在线程安全问题代码的前面,Unlock放在线程安全问题代码的后面。** * * @author jianyeli */ public class Runnableimpl implemen原创 2020-11-11 17:31:57 · 242 阅读 · 0 评论 -
解决线程安全问题的第二种方法:同步方法
上次我们使用同步代码块解决线程安全问题,这次我们将采用第二种方式,同步方法,简单就是把同步代码块放在一个方法里。格式:修饰符 synchronized 返回值类型 方法名(参数列表){ 线程安全问题的代码}使用步骤:1.把访问了共享数据的代码抽出来。2.在方法上添加synchronized修饰符。** * * @author jianyeli */ public class Runnableimpl implements Runnable { public int原创 2020-11-11 16:52:26 · 242 阅读 · 0 评论 -
解决线程安全问题的第一种方式
当我们开启多个线程任务的时候,会发现他们会读取同一个数据,导致出现线程安全的问题。这里使用实现接口的方式开启多个线程。** * * @author jianyeli */ public class Runnableimpl implements Runnable { public int ticket= 100; @Override //设置线程任务 public void run() { while(true){ if(ticke原创 2020-11-10 23:38:40 · 103 阅读 · 0 评论 -
Java创建多线程程序
1.创建多线程程序的第一种方式:thread的子类实现步骤:1.创建一个thread的子类。2.重写thread的子类中的Run方法,设置线程任务。3.创建thread的子类对象。4.调用thread中的start方法,开启新的线程,执行run方法。/** * * @author jianyeli */public class MyThread extends Thread { //重写父类Thread中的run方法,设置线程任务 public void run(){原创 2020-11-10 10:20:55 · 124 阅读 · 0 评论