
【JUC并发编程】
Java是一种面向对象的、跨平台的通用型编程语言。
我有满天星辰
你眼里有满天星辰,我眼里有你~
博客园地址:https://www.cnblogs.com/beiluoL/
展开
-
2.Lock锁
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!传统的 synchronized 锁package demo1;/** * 基本的卖票例子 * 线程就是一个单独的资源类,没有任何附属的操作 * 1.属性 ,方法 */public class SaleTicketTest1 { public static void main(String[] args) { .原创 2020-05-23 18:10:46 · 308 阅读 · 0 评论 -
8.ReadWriteLock(读写锁)
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!ReadWriteLock(读写锁 )独占锁(写锁) 一次只能被一个线程占有共享锁(读锁) 多个线程可以同时占有读写锁 读的时候可以被多线程同时读,写的时候只能有一个线程去写代码测试:实现如下读-读 可以共存!读-写 不能共存!写-写 不能共存!package demo6;import java.util.HashMa.原创 2020-05-24 23:50:56 · 248 阅读 · 0 评论 -
线程池
线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。线程池的工作机制在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给某个线程,线程池在拿到任务后,就在内部寻找是否有空闲的线程,如果有,则将任务交给某个空闲的线程。一个线程同时只能..原创 2020-05-11 18:30:40 · 195 阅读 · 0 评论 -
10.线程池
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!线程池线程池:三大方法、7大参数、4种拒绝策略池化技术程序的运行,本质:占用系统的资源!优化资源的使用!=》池化技术线程池、连接池、内存池、对象池//池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。线程池的好处:降低资源的消耗提高响应的速度方便管理线程复用,可以控制最大并发数,管理线程线程池:三大方法阿里.原创 2020-05-30 15:32:59 · 237 阅读 · 0 评论 -
线程协作(生产者消费者模式)
在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。生产者消费者模式生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了.原创 2020-05-11 18:03:53 · 274 阅读 · 0 评论 -
死锁
死锁多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。化妆死锁案例:package test;//死锁:多个线程互相抱着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { Makeup m1 = new Makeup(0, "女孩1准备化妆:"); Makeup m2原创 2020-05-11 14:01:55 · 160 阅读 · 0 评论 -
线程的创建方式:1.继承Thread类
Thread自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程线程不一定立即执行,由CPU调度!package test;//创建线程方式一:继承Thread类 ,重写run方法 ,调用start开启线程public class ThreadDemo1 extends Thread { @Override public void run() { //run方法线程体 f原创 2020-05-09 17:54:29 · 1054 阅读 · 0 评论 -
1.JUC概述
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频内容。给狂神推荐,点赞吧!1.什么是JUCjava.util.concurrent 在并发编程中使用的工具类在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 系统,包括线程池、异步 IO 和轻量级任务框架。 提供可调的、灵活的线程池。还提供了设计用于 多线程上下.原创 2020-05-22 13:00:34 · 293 阅读 · 0 评论 -
创建线程的方式:3.实现Callable接口
实现Callable接口实现Callable接口,需要返回值类型:implements Callable重写call方法,需要抛出异常 :public Boolean call() throws Exception {}创建目标对象 :CallableTest callableTest = new CallableTest();创建执行服务:ExecutorService service = Executors.newFixedThreadPool(1);提交执行:Future原创 2020-05-09 23:29:38 · 411 阅读 · 0 评论 -
线程概述
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。程序,进程,线程:在操作系统中运行的程序就是进程,比如你的QQ、播放器、游戏、IDE等等…一个进程可以有多个线程,如视频中同时听声音,看图像,看字幕。。。进程Process与线程Thread进程里面就有程序。程序是咱们写的代码,是指令和数据的有序集合,其本身没有任何运行的含义,是一个.原创 2020-05-11 19:51:25 · 170 阅读 · 0 评论 -
7.常用的辅助类
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!CountDownLatch(减法计数器)代码测试:package demo5;import java.util.concurrent.CountDownLatch;//计数器public class CountDownLatchTest { public static void main(String[] args) throws .原创 2020-05-24 22:41:18 · 464 阅读 · 0 评论 -
线程的创建方式:2.实现Runnable接口
实现Runnable定义MyRunnable实现Runnable接口实现run方法,编写线程执行体创建线程对象,调用start()方法启动线程代码实现package test;//创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法public class ThreadDemo2 implements Runnable { @Override public void run() { //r原创 2020-05-09 18:26:24 · 1189 阅读 · 0 评论 -
9.阻塞队列和同步队列
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!阻塞队列阻塞 队列当阻塞队列为空时,从队列中获取元素的操作将会被阻塞。当阻塞队列为满时,从队列里添加元素的操作将会被阻塞。BlockingQueueBlockingQueue 不是新的东西什么情况下我们会使用队列?多线程并发处理,线程池!学会使用队列添加、移除四组API方式抛出异常有返回值,不抛出异常阻塞等待超时等.原创 2020-05-26 22:53:53 · 1184 阅读 · 0 评论 -
线程不安全
并发并发:同一个对象被多个线程同时操作并发问题:买火车的票的案例 多个线程同时操作同一个对象package test;import com.sun.org.apache.bcel.internal.generic.NEW;//多个线程同时操作同一个对象//买火车的票的案例//发现问题 :多个线程操作同一个资源的情况下,线程不安全,数据紊乱public class ThreadTest2 implements Runnable { private int ticketN原创 2020-05-10 22:05:38 · 389 阅读 · 0 评论 -
Lock(锁)
Lock(锁)从JDK5.0开始,Java提供了更强大的线程同步机制——通过显示定义同步锁对象来实现同步,同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程对共享线程进行了访问的工具。锁提供了对共享资源的独占访问,每次只有一个线程对Lock对象加锁,线程开始访问共享资源的之前应先获得Lock对象ReentrantLock(可重入锁) 类实现了 Lock , 它拥有与 synchronized 相同的并发性和内存语义,在实现线程安全的控制中,比较原创 2020-05-11 14:25:20 · 699 阅读 · 0 评论 -
线程同步
线程同步由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提供一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法 和 synchronized 块同步方法: public synchronized void method(int args){}synchronized方法控制对"对象"的访问,每个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞,方原创 2020-05-11 13:59:44 · 257 阅读 · 0 评论 -
实现静态代理对比Thread
实现静态代理对比Thread(1)静态代理总结真实对象和代理对象都要实现同一个接口代理对象要代理真实角色(2)好处代理对象可以做更多真实对象做不了的事情真实对象专注于做自己的事情package test;//静态代理总结//真实对象和代理对象都要实现同一个接口//代理对象要代理真实角色//好处//代理对象可以做更多真实对象做不了的事情//真实对象专注于做自己的事情public class StaticProxy { public static void ma原创 2020-05-10 22:24:07 · 224 阅读 · 0 评论 -
多线程详解:线程状态
线程状态线程共包括以下5种状态。新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。运行状态(Running) : 线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。原创 2020-05-10 16:45:55 · 271 阅读 · 0 评论 -
11.四大函数式接口
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!函数式接口:只有一个方法的接口lambada表达式 链式编程 函数式接口 Stream计算超级多FunctionalInterface简化编程模型,在新版本的框架底层大量应用!foreach(消费者类的函数式接口)@FunctionalInterfacepublic interface Runnable { /** * Wh.原创 2020-06-06 23:25:23 · 292 阅读 · 0 评论 -
4.如何判断锁的是谁 :八个锁的问题
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!关于锁的八个问题 深刻理解我们的锁如何判断锁的是谁!永远的知道什么锁,锁到底锁的是谁!1.标准情况下,两个线程先打印 发短信 还是打电话package demo3;import java.util.concurrent.TimeUnit;/** * 1.标准情况下,两个线程先打印 发短信 还是打电话 */public class Te.原创 2020-05-23 22:35:32 · 661 阅读 · 2 评论 -
6.Callable
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!Callable可以有返回值可以抛出异常方法不同,run()/ call()RunnableFutureTask测试package demo5;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import ja.原创 2020-05-24 22:37:41 · 202 阅读 · 0 评论 -
5.并发下不安全的集合类如何解决?
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!List 不安全package demo4;import java.util.ArrayList;import java.util.UUID;//java.util.ConcurrentModificationException 并发修改异常public class ListTest { public static void main(St.原创 2020-05-24 01:00:05 · 300 阅读 · 0 评论 -
3.生产者和消费者问题
感谢秦疆老师的JUC并发编程视频,更多了解哔哩哔哩搜索【狂神说Java】。本文内容源于秦疆老师的JUC并发编程视频教程。给狂神推荐,点赞吧!Synchronized版生产者和消费者的问题package demo2;/** * 线程之间的通信问题: 生产者和消费者问题! 等待唤醒,通知唤醒 * 线程交替执行 A B 操作同一个变量 num = 0 * A num+1 * B num-1 */public class A { public static void main.原创 2020-05-23 18:13:57 · 371 阅读 · 0 评论