
多线程
Java基础之多线程复习
InsistCode
不能停下来呀
展开
-
Callable创建线程的原理
我们都知道创建线程的常用两种方式是:1.继承Thread 类,重写run方法2.实现Runnable接口,重写run方法。但是还有一种不常见的线程创建方式就是实现Callable接口,实现call方法。实现Callable接口会返回一个返回值。public interface Callable返回结果并可能引发异常的任务。 实现者定义一个没有参数的单一方法,称为call 。 Callable接口类似于Runnable ,因为它们都是为其实例可能由另一个线程执行的类设计的。 然而,A Runnable原创 2021-01-23 13:09:21 · 374 阅读 · 2 评论 -
八锁现象理解锁
接下来以代码为例来理解锁的八种情况:TimeUtils工具类:API提供的常用工具类,时间处理。1、以下代码是先发短信还是先打电话?package com.yy;import java.util.concurrent.TimeUnit;public class Test1 { public static void main(String[] args) { Phone phone = new Phone(); new Th原创 2021-01-20 23:04:50 · 440 阅读 · 0 评论 -
Lock锁、Condition实现精准通知对象
在了解Lock锁之前我们需要去了解一下Synchronized。锁是什么?锁是用于通过多个线程控制对共享资源的访问的工具。Synchronized是Java中的一个关键字,在并发编程中要考虑线程安全问题,关键字Synchronized保证了同一时刻只有一个线程可以执行代码块或者方法。Synchronized作用于实例方法当两个线程同时对一个对象的一个方法进行操作时,只有一个线程能够抢到锁,一个线程抢到该对象的锁之后其他对象就无法去抢到该锁,只有等到获取到锁的对象释放锁之后,其他线程才能去获取原创 2021-01-19 20:52:15 · 157 阅读 · 0 评论 -
线程池
线程池的创建:JDK为我们提供了创建线程池的工具类-Executors线程池的大小还有一个创建线程池的方法,就是去创建一个ThreadPoolExecutor,我们可以在Executors工具类中看到它也是new了一个ThreadPoolExecutor,可以到ThreadPoolExecutor的源码中看看:/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters原创 2021-01-17 20:05:43 · 68 阅读 · 0 评论 -
生产者消费者问题
解决生产者消费者问题的两个办法管程法生产者:负责生产数据的模块消费者:负责处理数据的模块缓冲区:消费者不能直接使用生产者的数据,他们之间加了一个缓冲区,生产者将生产好的数据放入缓冲区,消费者从缓冲区中取数据。实现代码:package com.yys.PC;/** * 管程法 * * 生产者、消费者、产品、缓冲区 */public class TestPC { public static void main(String[] args) { SynCo原创 2021-01-17 19:43:33 · 115 阅读 · 0 评论 -
Lock(锁)
JDK5以后提供了一个更加强大的线程同步机制—通过显式定义同步锁对象来实现同步,同步锁使用Lock对象。ReentrantLock类实现了Lock,它拥有synchronized相同的并发性和内存语言,在实现线程安全的控制中,比较长使用的是ReentrantLock,可以加锁和释放锁。我们可以通过简单的实现抢票来观察:package com.yys;import java.util.concurrent.locks.ReentrantLock;public class TestLock {原创 2021-01-17 17:56:17 · 135 阅读 · 0 评论 -
静态代理模式
以现实结婚为例,婚庆公司作为代理对象,结婚的人作为真实对象。package com.yys.proxy;/** * 模拟结婚: 婚庆公司为代理 */public class StaticProxy { public static void main(String[] args) { WeddingCompany weddingCompany = new WeddingCompany(new Zhangsan()); weddingCompany.mar原创 2021-01-15 19:36:42 · 91 阅读 · 0 评论