多线程
文章平均质量分 77
cyc&阿灿
把自己所学的东西,用博客记录下来。希望对自己和对别人有帮助。
展开
-
Java实现多线程的方式(通过Callable和FutureTask实现)
用Java实现多线程的方式有两种:①、继承Thread类;②、实现Runnable接口。并且这两种实现方式都是重写run方法。我们知道run方法是没有返回值的。如果你想让一个多线程有一个返回值,那么你可以实现Callable接口。原创 2022-04-28 17:44:41 · 966 阅读 · 0 评论 -
【多线程】送你1万朵玫瑰花
从前的从前有这么一个故事,小明和小红在谈恋爱,小红对小明说:如果你送我一万朵玫瑰花,我们就结婚。小明于是像打了鸡血一样,决定每次送一百朵玫瑰花,只要送够一百次就有1万朵玫瑰花啦!说干就干小明写起了多线程进行计算。原创 2022-04-27 17:45:16 · 450 阅读 · 1 评论 -
【多线程】结婚基金
一、故事引入80年代,小明和小红恋爱多年,准备结婚。于是两个人打拼多年,积攒了1万块钱的结婚基金,并且决定把它存放在银行。由于当时没有手机等通信设备,所以在两个人中,有其中一个人去取钱,另外一个人是不知道的。后来,小明迷上了追星,从银行里取出了1千块钱,于是卡里就剩下了9千块钱。这个时候,小红是不知道的,她依然觉得银行卡里有一万块钱。二、实现思路小明类:多线程类,睡眠10毫秒,等线程醒来后,修改金额为9千,为了使得修改效果明显,当小明修改完后,打印出 “ 金额已经...原创 2022-04-27 11:12:39 · 550 阅读 · 2 评论 -
浅谈多线程生产者和消费者问题(线程的等待和唤醒)
一、概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产者和消费者问题,实际上就是两个线程:生产者:生产数据以供消费者消费,即生产者线程。消费者:消费生产者生产的数据,即消费者线程。在这个过程中,生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为 消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为。二、举个栗子...原创 2022-04-24 10:21:32 · 988 阅读 · 0 评论 -
浅谈多线程生产者和消费者问题(阻塞队列实现等待唤醒机制)
一、ArrayBlockingQueue概述ArrayBlockingQueue的底层是一个有界数组,它实现了BlockingQueue接口。而在BlockingQueue方法中有两个非常核心的方法:void put(E e):将参数放入队列中,如果放不进去会阻塞。E take():取出第一个数据,取不到会阻塞二、代码演示:take进入阻塞的情况:ArrayBlockingQueue<String> list = new...原创 2022-04-24 11:04:00 · 321 阅读 · 1 评论 -
经典案例:卖票问题【线程同步】
一、案例需求某个电影院上映了史诗级大片《回村的诱惑》,共有100张票,卖票窗口总共有三个。请设计一个程序模拟卖票的过程!二、步骤分析1、定义一个卖票的线程类实现Runnable接口,并且声明一个成员变量:private int ticket=100;2、在run方法中,判断该票数是否大于0,就卖票,打印输出剩余票数和窗口;3、一个线程执行完之后,票数减一;4、如果票数<=0则停止售票;...原创 2022-04-24 15:18:53 · 1268 阅读 · 0 评论 -
Java实现多线程的方式(通过继承Thread类)
一、在提到线程之前,我们要理解什么是程序和进程。1、程序:通过某种编程语言编写并实现一系列特定功能的静态代码。也就是说,我们编写好的代码,在没有运行之前,他就是一个程序。2、进程:狭义来讲,是指正在运行的程序。一个正在运行的程序就是一个进程。广义来讲,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。举个类似的例子:当你从网上下载了一个QQ,你没有运行它,它就是一个程序。如果运行它,它就可以加载到内存空间,分配到cpu的资源。所以这时候,正在运行的QQ就是一个进程啦。小提示:你原创 2022-03-14 10:23:15 · 1857 阅读 · 0 评论