![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
管不住嘴的要吃喝
这个作者很懒,什么都没留下…
展开
-
notify和wait 技术处理线程同步问题:甲、乙销售员负责销售产品,销售人员每人每3个时间单位销售2件产品
案例场景如下:某工厂生产某种产品,有甲、乙销售员负责销售产品。每件产品都有自己的编号,工厂生产某种产品所需要的时间单位分别为1;销售人员每人每3个时间单位销售2件产品。生产与销售的协调关系如下:当商品库存大于100 件时工厂停止生产该产品,当产品库存小于5件时候停止销售,模拟该过程。1、创建工程。2、使用notify和wait 技术处理线程同步问题3、使用队列技术存放产品4、正确的使用 锁5、能最终计算30时间单位内的销售冠军仓库类package com.itguo.sell;impo原创 2021-05-10 00:24:23 · 57 阅读 · 0 评论 -
wait和notify方法模拟生产者模式和消费者模式(基础)
Object类中的wait和notify方法锁池:假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B,C想要调用这个对象的某个synchronized方法(或者代码块)之前 必须获得该对象锁的拥有权,而恰巧该对象的锁目前正被A所占有,此时B,C线程就会被阻塞,进入一个地方去等待锁的释放,这个地方就是该对象的锁池等待池假设A线程调用了某个对象的wait方法,线程A就会释放该对象的锁,同时线程A就进入到了该对象的等待池中,进入等待池中的线程不会去竞争该对象的锁wait() 让正在该对原创 2021-05-09 23:15:04 · 79 阅读 · 0 评论 -
实现线程的第三种方式:Callable结合Task
实现线程的第三种方式使用Callable结合Task实现多线程编程前两种 分别是:继承Thread类;实现Runnable接口实现线程的第三种方式:FutureTask,未来任务类对象好处:这种方式创建线程对象,可以获得线程的返回值缺点:在获取返回值的时候,会造成主线的阻塞package com.itguo.thread;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionExcepti原创 2021-05-09 21:36:39 · 397 阅读 · 0 评论 -
守护线程基础模拟
守护线程java语言中线程分为两大类用户线程守护线程(后端)守护线程的特点一般守护线程是一个死循环,所有的用户线程只要结束,守护线程自动结束案例:死循环的守护线程在主线程结束后也结束package com.itguo.thread;/** * 守护线程属于后台线程,一般用来守护用户线程,用户线程只要一结束,守护线程也结束 * 守护线程一般是个死循环 * * 主线程运行的时候,守护线程开启,主线程结束,守护线程也结束 */public class ThreadTest09原创 2021-05-09 21:08:19 · 46 阅读 · 0 评论 -
龟兔鸡赛跑(java线程)
龟兔鸡赛跑:场景如下。兔子、乌龟和公鸡进行赛跑,其中兔子每秒0.5米的速度,每跑2米休息10秒;乌龟每秒跑0.1米,不休息;公鸡每秒0.8米,每跑3秒需要吃一条虫子,耗时0.6秒。 当其中一个跑到终点后其他动物就不跑了;比赛道路长20米。试用多线程模拟该比赛过程。Animal类(父类)package com.guoyu.anli;/** * @author ShuaiGUO * 父类 动物类,继承Thread,变成线程类 */public class Animal extends Th原创 2021-05-09 20:45:33 · 191 阅读 · 0 评论 -
龟兔赛跑,兔子每秒100米,乌龟每秒50米
案例:模拟龟兔赛跑赛道:1000米,兔子每秒100米,乌龟每秒50米,兔子跑到900米处开始睡觉(自己把自己挂起),乌龟一直跑,乌龟跑到终点 唤醒兔子,最终乌龟获得比赛胜利,兔子比赛失败兔子类package com.itguo.anli02;public class Rabbit extends Thread{ private String name; public Rabbit(String name) { //通过super(name)来设置名字原创 2021-05-09 13:54:58 · 417 阅读 · 0 评论 -
java基础火车站售票(线程安全)
案例:火车站售票(线程安全)package com.itguo.anli;public class anli { public static void main(String[] args) { MyThread myThread = new MyThread(); Thread t1 = new Thread(myThread); Thread t2 = new Thread(myThread); Thread t3 = n原创 2021-05-09 13:51:15 · 65 阅读 · 0 评论 -
线程基础安全问题
线程安全问题如何解决线程安全问题:加锁:synchronized 线程同步关键字,线程同步锁。可以修饰方法,也可以使用同步代码块同步代码块:可以使线程同步。synchronized (线程共享对象){}同步指的是线程与线程之间发生了等待关系例如:有两个线程A、B,A线程执行的时候B线程必须等待synchronized (线程共享对象){}假设当前程序有t1、t2线程,this我们一般称之为对象锁,如果t1线程先来到同步代码块,发现this对象没有被占有这时t1线程会占有这原创 2021-05-09 13:50:24 · 42 阅读 · 0 评论 -
线程初级概述及代码应用
线程1、概述:进程:操作系统中一个程序及其数据在处理机上顺序执行时所发生的活动(是一个程序)线程:也是轻量级进程,是进程中某个单一顺序的控制流,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。多进程在操作系统中同时运行多个任务(程序)多线程在同一应用程序中有多个顺序流同时执行线程的生命周期1.新建状态:创建出线程对象,线程处于新建状态2.就绪状态:线程调用start方法,当前线程会处于就绪状态,处于就原创 2021-05-09 13:47:29 · 60 阅读 · 0 评论