202206-18 Java基础:彻底搞懂java多线程 目录进程与线程使用多线程的优势线程的状态创建线程线程中断总结进程与线程进程进程是操作系统结构的基础,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的基本单位。进程可以被看作程序的实体,同样,它也是程序的容器。线程线程是操作系统调度的最小单元,也叫作轻量级进程。在一个进程中可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性。使用多线程的优势使用多线程可以减少程序的响应... 继续阅读 >
202205-30 学习java多线程 目录介绍为什么需要多线程线程状态转换线程使用方式继承Thread类实现Runnable接口实现Callable接口同步代码---Runnable接口方式同步方法--Runnable接口方法同步方法---继承方法synchronized锁机制死锁Lock锁机制介绍程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消... 继续阅读 >
202205-27 Java创建多线程的8种方式集合 目录1、继承Thread类,重写run()方法2、实现Runnable接口,重写run()3、匿名内部类的方式4、带返回值的线程(实现implementsCallable<返回值类型>)5、定时器(java.util.Timer)6、线程池的实现(java.util.concurrent.Executor接口)7、Lambda表达式的实现(parallelStream)8、Spring实现多线程1、继承Thread类,重写run()方法//方式1packagecn.itcats.thread.Test1;publicclassDemo1extendsThread{//重写的是父类Thread的r... 继续阅读 >
202205-24 Java多线程与优先级详细解读 目录1、多线程1.1多线程的基本概念1.2多线程的实现1.3继承Thread类实现多线程1.4Runnable接口实现多线程1.5Thread类和Runnable接口实现多线程的区别1.6线程的操作状态1.7Callable实现多线程1.8线程命名和取得1.9线程的休眠1.10线程的优先级1.11线程的同步与死锁1.12死锁综合案例1.解决数据错位问题:依靠同步解决2.解决数据的重复设置和重复取出面试题:请解释sleep()和wait()的区别?1、多线程要使用多线程必须有一个前提,有一个... 继续阅读 >
202204-30 运用示例详细总结Java多线程 目录进程与线程Java中线程实现的方式实现Runnable接口继承Thread类Thread类和Runnable接口线程的状态变化取得和设置线程的名称线程的操作方法线程的强制运行线程的休眠中断线程后台线程线程的优先级线程的礼让同步以及死锁同步代码块同步方法进程与线程进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生,发展到最终消亡的过程。多进程操作系统能同时... 继续阅读 >
202203-17 java多线程:基础详解 目录Java内存模型主内存和工作内存的交互命令内存模型的原子性内存模型的可见性内存模型的有序性指令重排优化的底层原理valatile原理volatile与加锁的区别先行发生原则线程的三种实现方式总结Java内存模型Java内存模型与Java内存结构不同,Java内存结构指的是jvm内存分区。Java内存模型描述的是多线程环境下原子性,可见性,有序性的规则和保障。Java内存模型提供了主内存和工作内存两种抽象,主内存指的是共享区域,工作... 继续阅读 >
202203-16 JAVA多线程线程安全性基础 目录线程安全性什么是线程安全的代码什么是线程安全性总结线程安全性一个对象是否需要是线程安全的,取决于它是否被多个线程访问,而不取决于对象要实现的功能什么是线程安全的代码核心:对 共享的 和 可变的 状态的访问进行管理。防止对数据发生不受控的并发访问。何为对象的状态?状态是指存储在对象的状态变量(例如实例或静态域)中的数据。还可能包括 其他依赖对象 的域。eg:某个HashMap的状... 继续阅读 >
202201-07 一篇文章带你入门java多线程 目录一、描述二、一个线程的生命周期三、线程的优先级四、创建线程五、示例1、Runnable接口2、继承Thread3、Callable和Future创建线程4、测试总结一、描述Java给多线程编程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语-进程:一个进程包括由操作... 继续阅读 >
202112-09 Java多线程深入理解 目录线程Thread类Runnable接口创建线程Thread和Runnable的区别匿名内部类方式实现线程的创建线程安全线程安全线程同步同步方法Lock锁线程状态等待唤醒机制线程间通信等待唤醒机制生产者与消费者问题线程池线程池的概念线程池的使用总结多线程并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时... 继续阅读 >
202111-17 Java多线程:生产者与消费者案例 目录前言工具知识点设计思路具体步骤总结前言想象一下生活中哪些是和线程沾边的?饭店炒菜就是一个很好的例子首先客人要吃菜,前提是厨师要炒好,也就是说,厨师不炒好的话客人是没有饭菜的。这时候,厨师就是一个线程,客人拿菜就是另一个线程。工具jdk13,IDEA2019.1.4知识点Thread、Runnable、synchronized、面向对象知识(继承、封装、接口、方法重写)、条件判断以及线程的一些其他知识点设计思路首先要有两个线程,也就是说... 继续阅读 >
202111-01 Java经典面试题汇总:多线程 目录1. 并行和并发有什么区别?2.线程和进程的区别?3.守护线程是什么?4.实现多线程的方式有哪些?5.说一下runnable和callable有什么区别?6.sleep()和wait()有什么区别?7.线程有哪些状态?8.notify()和notifyAll()有什么区别?9.线程的run()和start()有什么区别?10.创建线程池有哪几种方式?11.线程池中submit()和execute()方法有什么区别?12.Java程序中怎么保证多线程的运行安全?13.多线... 继续阅读 >
202110-25 带你快速搞定java多线程(5) 目录1、介绍2、countdownlantch的用法。3、如何利用AQS实现CountDownLatch4、总结1、介绍CountDownLantch倒数计时器,一个同步辅助类,一个线程(或者多个),等待另外N个线程完成某个事情后才能执行。用给定的计数初始化CountDownLatch,其含义是要被等待执行完的线程个数。每次调用CountDown(),计数减1,执行到await()函数会阻塞等待线程的执行,直到计数为0。CountDownLantch无法重置2、countdownlantch的用法。举个例子场... 继续阅读 >
202110-25 带你快速搞定java多线程(4) 目录1、AQS是什么?2、AQS模型3、AQSstate4、AQS两种资源共享方式:5、模板方式实现自定义6、锁的分类:公平锁和非公平锁,乐观锁和悲观锁7、CAS8、总结1、AQS是什么?AQS是类AbstractQueuedSynchronizer的简称,也是常用锁的基类,比如常见的ReentrantLock,Semaphore,CountDownLatch等等。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架。是Java提供的一种模板,一般在现有同步器无法完成的时候可以自... 继续阅读 >
202110-25 带你快速搞定java多线程(3) 目录一、锁的概念二、synchronized的使用方式三、synchronized的实现原理列小结四、线程池是什么五、为什么要用线程池?六、看下类图,从整体上理解下七、线程池的创建八、线程池核心参数说明九、几个疑问点9.1、是怎么保证线程不销毁的?9.2提交任务有哪几种方式?9.3拒绝策略都有哪些?9.4线程池的关闭9.5初始化线程池时线程数的选择十、总结一、锁的概念先来聊聊这几个概念,总不能聊起来的时候啥也不知道,只知道干活也... 继续阅读 >
202110-25 带你快速搞定java多线程(2) 目录1、Future的类图结构,从整体上看下Future的结构2、future的使用,说的再多都么什么用,来个例子悄悄怎么用的。3、通俗理解4、原理5、总结1、Future的类图结构,从整体上看下Future的结构首先看下future接口的函数,共有5个方法。get()获取执行的结果,另外一个重载是有时间限制的get,如果超时会有异常isDone()判断future结果是否处理完成cancel取消任务2、future的使用,说的再多都么什么用,来个例子悄悄怎么用的... 继续阅读 >
202110-25 Java多线程之 FutureTask:带有返回值的函数定义和调用方式 FutureTask返回值的函数定义和调用使用Runnable接口定义的任务是没有返回值的。很多时候,我们是有返回值的,为了解决这个问题,Java提供了Callable接口,可以返回指定类型的值。但是这个接口本身是不具备执行能力的,所以Java中,还有一个FutureTask类用于使用Callable接口定义带有返回值的任务。使用示例以下代码演示了定义和调用的整个过程。importjava.util.concurrent.Callable;importjava.util.concurrent.FutureTask;pu... 继续阅读 >