
Java多线程
Java多线程
风暴计划
一枚代码小菜鸟
展开
-
【Java线程池】Java线程池汇总,看这一篇文章就够了-2
1 线程简介1.1 什么是线程在介绍线程之前,先来了解一下程序和进程的概念。程序,是算法和数据结构及其组织形式的一种描述。在操作系统中,后缀为.exe的文件都是一个程序。程序是”死“的,是一个静态代码文件。当你双击执行这个文件的时候,就会得到一个相对应的进程,所以,进程是”活“的,是正在被执行的活动实体。进程(Process),是计算机中的程序关于某些数据集合上的一次运行活动,它是操作系统进行资源分配和调度的基本单位。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体。但是,在...原创 2020-12-28 21:15:08 · 188 阅读 · 0 评论 -
JUC实战讲解-1-李贺飞老师
【来自B站JUC视频:https://www.bilibili.com/video/BV14W411u7gB】尚硅谷JUC源码讲授实战教程完整版(java juc线程精讲)1、Java JUC 简介在JDK5提供了java.util.concurrent(简称 JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。 提供可调的、灵活的线程池。还提供了设计用于 多线程上下文中的 Collection 实现等。..原创 2020-10-06 00:05:32 · 563 阅读 · 0 评论 -
java高并发系列 - 第6天:线程的基本操作
本文转载自:https://mp.weixin.qq.com/s?__biz=MzA5MTkxMDQ4MQ==&mid=2648933082&idx=1&sn=e940c4f94a8c1527b6107930eefdcd00&chksm=88621ae4bf1593f270991e6f6bac5769ea850fa02f11552d1aa91725f4512d4f1ff8f18fcdf3&token=2041017112&lang=zh_CN#rd..原创 2020-09-21 07:52:00 · 110 阅读 · 0 评论 -
java高并发系列 - 第12天JUC:ReentrantLock可重入锁
java高并发系列 - 第12天JUC:ReentrantLock可重入锁站点:https://mp.weixin.qq.com/s?__biz=MzA5MTkxMDQ4MQ==&mid=2648933116&idx=1&sn=83ae2d1381e3b8a425e65a9fa7888d38&chksm=88621ac2bf1593d4de1c5f6905c31c7d88ac4b53c0c5c071022ba2e25803fc734078c1de589c&toke原创 2020-09-19 16:46:01 · 177 阅读 · 0 评论 -
java高并发系列 - 第10天:线程安全和synchronized关键字
转载自:(1)java高并发系列 - 第10天:线程安全和synchronized关键字站点:https://mp.weixin.qq.com/s?__biz=MzA5MTkxMDQ4MQ==&mid=2648933107&idx=1&sn=6b9fbdfa180c2ca79703e0ca1b524b77&chksm=88621acdbf1593dba5fa5a0092d810004362e9f38484ffc85112a8c23ef48190c51d17e06223原创 2020-09-19 15:20:58 · 214 阅读 · 0 评论 -
Java线程池截图
//0:获取机器核数int availableProcessors = Runtime.getRuntime().availableProcessors();System.out.println(availableProcessors);原创 2020-07-26 22:04:18 · 176 阅读 · 0 评论 -
Java多线程2.1.多线程之死锁
多线程之死锁 1、锁对象Lock虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁。为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。Lock:是一个接口 void lock() void unlock() ReentrantLock:Lock接口的一个具体实现类2、同步弊端:效率低...原创 2018-09-15 10:52:44 · 238 阅读 · 0 评论 -
Java多线程2.2.生产者与消费者之间的关系1
线程间通信问题 1、线程间通信问题(1)线程间通信问题:不同种类的线程之间针对同一个资源的操作。(2)通过设置线程(生产者)和获取线程(消费者)针对同一个学生对象进行操作。2、线程间通信举例(1)创建学生类package cn.itcast_03;public class Student { String name; int age;}(2)创建生产者...原创 2018-09-15 11:57:09 · 1239 阅读 · 0 评论 -
Java多线程2.3.生产者与消费者之间的关系2
生产者与消费者之间的关系 1、线程间通信问题描述图 2、线程的状态转换图及常见执行情况3、等待唤醒机制思路图解4、线程的生命周期 ...原创 2018-09-15 12:03:43 · 2553 阅读 · 0 评论 -
【Java内存模型】笔记
【Java内存模型】笔记 【Java内存模型】笔记,此专栏是用来记录一些关于Java内存模型的知识点的,可能会比较零零散散。比较详细的内存模型应该会写专门的博客来学习。 1、这就涉及到内存模型的知识了,我们都知道CPU运算速度极快,但是每次读取数据都要直接访问内存,会严重拖慢CPU的速率,所以在内存之外就有了一层高速缓存,在JAVA中,每次线程读取到一个数据,都会将这份数据copy...原创 2018-10-25 09:43:18 · 209 阅读 · 0 评论 -
【Java多线程实战】实现连环爆炸
【Java多线程实战】实现连环爆炸 1、Timer和TimerTask可以做为实现线程的第三种方式,前两种方式分别是继承自Thread类和实现Runnable接口。2、Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多...原创 2018-10-25 10:54:42 · 1188 阅读 · 0 评论 -
【Java线程池】Java线程池汇总,看这一篇文章就够了-1
【Java线程池】Java线程池汇总,看这一篇文章就够了(1)引言1:Java线程池在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服...原创 2018-10-25 13:31:42 · 8659 阅读 · 6 评论 -
【Java多线程实战】求和
Java多线程实战-求和 需求:开启五个线程,每个线程对一个给定数值从0开始累加求和。(1)MyCallable.javapackage com.storm_02;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.concurrent.Calla...原创 2018-10-24 17:03:59 · 1949 阅读 · 0 评论 -
多线程面试题
【问题】实现一个容器,提供两个方法,add,size。写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束。(1)解决方案1/** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束。 * ...转载 2018-12-16 17:28:26 · 315 阅读 · 0 评论 -
【Java多线程杂记】
1、在栈内存中新建一个对象oneObject,而这个栈内存对象引用了在堆内存中新建的那个对象。private Object oneObject=new Object();2、synchronized关键字的使用方式。需要博客专栏总结。(1)采用细粒度的锁,可以使线程争用时间变短,从而提高效率。(2)锁的信息是记录在堆内存变量中的,而不是记录在引用这个堆内存变量的引用上的。(3...原创 2018-12-16 23:04:30 · 348 阅读 · 0 评论 -
Java多线程2.10.定时器的概述与使用-多线程面试题
定时器的概述与使用 1、定时器的概述定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。 在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 Timer类 public Timer() public void schedule(TimerTask task, long delay) public void schedul...原创 2018-09-15 19:59:18 · 445 阅读 · 0 评论 -
Java多线程2.9.实现线程的常用方式-匿名内部类
实现线程的常用方式-匿名内部类 1、匿名内部类的格式匿名内部类的格式。 本质:是该类或者接口的子类对象。new 类名或者接口名() { 重写方法; };2、实现线程的常用方式-匿名内部类继承Thread类来实现多线程 实现Runnable接口来实现多线程package cn.itcast_11;/* * 匿名内部类的格式: * new 类名或者...原创 2018-09-15 19:36:21 · 232 阅读 · 0 评论 -
Java多线程2.8.线程池2-ExecutorService对象-Callable接口
线程池 1、实现Callable接口来实现线程池Callable:是带泛型的接口。 这里指定的泛型其实是call()方法的返回值类型。(1)创建实现Callable类的线程类package cn.itcast_09;import java.util.concurrent.Callable;//Callable:是带泛型的接口。//这里指定的泛型其实是call()方法的...原创 2018-09-15 19:07:19 · 288 阅读 · 0 评论 -
Java多线程1.2.实现多线程的方式1
实现多线程的程序 1、Java程序的启动原理:由java命令启动JVM,JVM启动就相当于启动了一个进程。接着,由该进程创建了一个主线程去调用了main方法。2、思考题: jvm虚拟机的启动是单线程的还是多线程的? 是多线程的。 原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。 现...原创 2018-06-01 16:24:27 · 468 阅读 · 0 评论 -
Java多线程1.3.线程调度
线程调度 1、问题引入(1)假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是CPU使用权,才可以执行指令。那么Java是如何对线程进行调用的呢?(2)线程有两种调度模型:分时调度模型:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片。 抢占式调度模型:优先让优先级高的线程使用 CPU,如果...原创 2018-09-02 15:30:34 · 276 阅读 · 0 评论 -
Java多线程1.4.线程控制
线程控制 1、线程控制我们已经知道了线程调度,接下来我们就可以使用如下方法对线程进行控制。线程休眠:public static void sleep(long millis) 线程加入:public final void join() 线程礼让:public static void yield() 后台线程:public final void setDaemon(boolea...原创 2018-09-02 16:20:00 · 306 阅读 · 0 评论 -
Java多线程1.5.线程的生命周期
Java线程的生命周期 1、Java线程的生命周期图解新建状态 就绪状态 运行状态 死亡状态 阻塞状态 2、原创 2018-09-02 16:42:04 · 216 阅读 · 0 评论 -
Java多线程1.6.实现多线程的方式2
实现多线程的程序 方式2:实现Runnable接口4 个步骤: A:自定义类MyRunnable实现Runnable接口 B:在MyRunnable类中重写run()方法 C:创建MyRunnable类的对象 D:创建Thread类的对象,并把C步骤的对象作为构造参数传递PS:由于实现接口的方式就不能直接使...原创 2018-09-02 17:03:36 · 412 阅读 · 0 评论 -
Java多线程1.7.实现多线程的方式1和方式2的比较
实现多线程的方式1和方式2的比较 问题引入:Java多线程的实现方式有两个,那么它们之间有什么区别呢? 有了方式1为什么还要方式2呢?原创 2018-09-02 17:18:10 · 586 阅读 · 0 评论 -
Java多线程1.8.多线程程序练习
多线程程序练习 1、需求:某电影院目前正在上映贺岁大片,共有100张票,而它有3个售票窗口售票,请设计一个程序模拟该电影院售票。两种方式实现:继承Thread类 实现Runnable接口2、实现方式1:继承Thread类(1)创建线程类package cn.itcast_06;public class SellTicket extends Thread {...原创 2018-09-02 18:13:07 · 2203 阅读 · 1 评论 -
Java多线程1.9.多线程程序练习的问题解决
多线程程序练习的问题解决 1、解决问题思路分析/* * 如何解决线程安全问题呢? * * 要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准!) * A: 是否是多线程环境 * B: 是否有共享数据 * C: 是否有多条语句操作共享数据 * * 我们来回想一下”Java多线程8.多线程程序练习“程序有没有上面...原创 2018-09-02 18:55:30 · 543 阅读 · 0 评论 -
Java多线程1.10.多线程程序练习的问题解决之解释
多线程程序练习的问题解决之解释 1、多线程程序练习的问题解决之文字解释(三种方式) * A: 同步代码块的锁对象是谁呢? * 任意对象。 * * B: 同步方法的格式及锁对象问题? * 把同步关键字 Synchronized 加在方法上。 * 同步方法的锁对象是谁呢? * this * * C: 同...原创 2018-09-02 19:33:26 · 199 阅读 · 0 评论 -
Java多线程1.11.多线程之容器
多线程之容器 1、线程安全的类 // 线程安全的类 StringBuffer sb = new StringBuffer(); Vector<String> v = new Vector<String>(); Hashtable<String, String> h = new Hashta...原创 2018-09-02 19:42:23 · 305 阅读 · 2 评论 -
Java多线程2.4.生产者与消费者之间的关系3
生产者与消费者之间的关系 1、线程间通信举例的问题解决2(1)创建学生类package cn.itcast_05;public class Student { String name; int age; boolean flag; // 默认情况是没有数据,如果是true,说明有数据}(2)创建生产者package cn.itcast_05;public ...原创 2018-09-15 17:07:28 · 439 阅读 · 0 评论 -
Java多线程2.5.生产者与消费者之间的关系4
生产者与消费者之间的关系 1、线程间通信举例的问题解决2 之代码优化(1)创建学生类——资源类需要自己提供线程安全的方法package cn.itcast_07;public class Student { private String name; private int age; private boolean flag; // 默认情况是没有数据,如果是true,说明...原创 2018-09-15 17:55:50 · 304 阅读 · 0 评论 -
Java多线程2.6.线程组的概述与使用
线程组的概述与使用 1、线程组线程组: 把多个线程组合到一起。 主要作用: 它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。(1)创建线程类package cn.itcast_06;public class MyRunnable implements Runnable { @Override public void run() { for (in...原创 2018-09-15 17:57:12 · 162 阅读 · 0 评论 -
Java多线程2.7.线程池1-ExecutorService对象-Runnable接口
线程池 1、线程池的概述程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。 线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。 在JDK5之前,我们必须手动实现自己的线程池。从JDK5开始,Java内置支持线程池。2...原创 2018-09-15 18:30:03 · 1521 阅读 · 0 评论 -
Java多线程1.1.多进程和多线程的概述
多进程和多线程的概述 1:多进程和多线程的概述要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为 线程是依赖于进程而存在的。2:什么是进程? 通过任务管理器我们就看到了进程的存在。 而通过观察,我们发现只有运行的程序才会出现进程。 进程:正在运行的程序。 进程 是操作系统进行资源分配和调度的独立单位。每一个进程都有它自己的内存空间和...原创 2018-06-01 15:19:23 · 730 阅读 · 3 评论