我们知道多线程可以实现同时执行多个任务(只是看起来是同时,其实是CPU的时间片切换特别快我们没感觉而已)。 现在假设一个做饭的场景,你没有厨具也没有食材。你可以去网上买一个厨具,但是这段时间,你不需要闲着啊,可以同时去超市买食材。 设想这是两个线程,主线程去买食材,然后开启一个子线程去买厨具。但是, ...
分类:
其他好文 时间:
2020-02-23 22:03:57
阅读次数:
98
以下哪几种方式可用来实现线程间通知和唤醒:( ) A. Object.wait/notify/notifyAll B. ReentrantLock.wait/notify/notifyAll C. Condition.await/signal/signalAll D. Thread.wait/not ...
分类:
其他好文 时间:
2020-02-21 16:29:34
阅读次数:
75
1 使用对象区别 sleep的调用者是Thread,wait的调用者是所有实例对象 2 使用位置的区别 sleep在任何位置都能使用,而wait/notify/notifyAll需要在"synchronized"同步代码块中使用(wait需要一个监视器monitor) 3 是否释放资源 wait方法 ...
分类:
其他好文 时间:
2020-02-16 13:24:37
阅读次数:
73
1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)4、sle ...
分类:
编程语言 时间:
2020-02-07 11:12:30
阅读次数:
84
经典笔试题: 1、自定义容器,提供新增元素(add)和获取元素数量(size)方法。2、启动两个线程。线程1向容器中新增10个数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止。 package com.gaopeng.programming.test2; import jav ...
分类:
编程语言 时间:
2020-02-05 11:49:43
阅读次数:
94
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.concurrent.TimeUnit; 4 5 /** 6 * 创建一个容器,一根线程往里放东西,一根线程判断是否符合条件 7 */ 8 public ...
分类:
编程语言 时间:
2020-01-31 20:46:36
阅读次数:
69
synchronized与lock的区别 1. 原始构成 synchronized是关键字属于JVM层面 monitorenter(底层是通过monitor对象来完成,其实wait/notify等对象也依赖于monitor独享只有在同步块或方法中才能调wait/notify等方法) monitore ...
分类:
编程语言 时间:
2020-01-24 23:45:12
阅读次数:
151
1、为什么要线程通信 多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按照我们的规律执行线程,此时就需要线程之间协调通信。 2、线程通讯方式 线程间通信常用方式如下: l 休眠唤醒方式:Object的wait、notify、notifyAll 和 Condition的awa ...
分类:
编程语言 时间:
2020-01-21 17:47:08
阅读次数:
85
一、采用对象的wait() notify()方法实现 二、采用volatile方法实现 ...
分类:
编程语言 时间:
2020-01-14 19:09:20
阅读次数:
101