摘要:
原理: CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。 import java.uti 阅读全文
摘要:
多线程任务,一般用于数据量较大的场景,比如开启多个异步方法先分别去执行,最终返回数据。 例子:(1)老师上着课,口渴了,去买水不合适,讲课线程继续,我可以单起个线程找班长帮忙买水,水买回来了放桌上,我需要的时候再去get。(2)4个同学,A算1+20,B算21+30,C算31*到40,D算41+50 阅读全文
摘要:
不废话,直接上代码 //演示HashMap类的并发问题 @Test public void demo1() { Map<String, Integer> map = new HashMap<>(); Random random = new Random(); for (int i = 0; i < 阅读全文
摘要:
Set 作为一个接口,它的实现类中主要是hashset,在多线程操作set的时候会出现问题,一下为一个列子 public static void main(String[] args) throws Exception { Set<String> set = new HashSet<>(); for 阅读全文
摘要:
List : 在多线程操作List的时候,在一个线程里面add东西,list实际上的大小跟预计是不一样的 public void demo1() { List<String> list = new ArrayList<>(); Random random = new Random(); for (i 阅读全文
摘要:
线程8锁,主要描绘多线程操作资源类时候的先后顺序问题 总结: package 第二季_25_锁; import java.util.concurrent.TimeUnit; /** * * @Description: 8锁 * 1 标准访问,先打印短信还是邮件 2 停4秒在短信方法内,先打印短信还是 阅读全文
摘要:
1.首先我们回顾一下面试题: 两个线程,一个线程打印1-52,另一个打印字母A-Z打印顺序为12A34B...5152Z, 要求用线程间通信 这个面试题就就是完全考察线程之间的通信机制,常用的技术分为二种 一种是Object 类中的自带的 wait 和 notify 机制, 二是 lock中的通信机 阅读全文
摘要:
1.继承 Thread 类,Thread的底层用的也是Runnable接口 package com.opendev.Thread; import java.util.Map; public class MyThread extends Thread { /** * 继承Thread方式 * * * 阅读全文
摘要:
介绍: synchronized:它是Jdk自带的一种锁机制,它能够锁住当前的对象,资源类,以及同步方法块。 Lock:它是Java 1.5之后提供的一种新的机制,能够更好的去操作当前的线程 Lock的优点:锁实现提供了比使用同步方法和语句可以获得的更广泛的锁操作。它们允许更灵活的结构,可能具有非常 阅读全文
摘要:
1.线程与进程的关系: 进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程 阅读全文