- 博客(11)
- 收藏
- 关注
原创 CountDownLatch类简单使用例子
public class MainTest { public static void main(String[] args) throws InterruptedException { final CountDownLatch cdl = new CountDownLatch(1);// final CountDownLatch scdl = new CountDownLatch(5); ExecutorService pool = Execut.
2020-05-13 17:31:33 168
原创 JDK1.7的ArrayList源码
ArrayList的存放用的是数组,在执行add方法可以自动扩容private transient Object[] elementData;第一次add方法后,数组elementData.length大小是10,但是size变成1,只有一个元素。size用的比较巧妙,size++,可以用作下标和list存放数据的大小//默认构造方法,设置数组elementData为{}空数组...
2020-03-24 15:14:31 168
原创 HttpServletRequest请求信息
String scheme = request.getScheme(); //获取协议(http)String serverName = request.getServerName(); //获取服务器名(localhost)int port = request.getServerPort(); //...
2020-03-12 16:51:07 172
原创 JDK 1.7版本的HashMap的源码
HashMap源码解读其实很简单其中里面有几个成员变量table 代表hashmap数组,它是按照capacity去创建数组大小的,所以大小table.length是capacity。size 是存放元素的个数。threshold 构造方法的时候阀值是capacity,put后阀值是capacity*loadFactormodCount 是操作量//构造方法(...
2020-01-09 17:35:43 161
原创 java多线程 volatile关键字的 用法
如下例子可以试试:有volatile和没有volatile的区别有 volatile可以保持共享 变量的可见性和防止程序的指令重排,会打印 出"flag = false"没有volatile的话就不会打印出"flag = false"public class VolatileTest { public volatile boolean flag = true; pub...
2019-12-11 21:58:22 115
原创 java多线程 用Unsafe实现原子性
import sun.misc.Unsafe;import java.lang.reflect.Field;public class LockDemo { volatile int i = 0; //类似操作内存的方法 static Unsafe unsafe = null; private static long iOffset; static...
2019-12-10 22:20:58 272
原创 Java多线程 park和unpark实现生产者和消费者
LockSupport的park和unpark实现挂起和唤醒线程相比wait和notify方法.park和unpark使用没有要求先执行prak后执行unpark的顺序,他们执行顺序不会导致死锁.但是他们在synchronized关键字包围的方法里面,他们还是会导致死锁,因为他们执行好不释放锁.import java.util.ArrayList;import java.util.Lis...
2019-12-06 13:04:39 669
原创 java 多线程 用阻塞队列实现生产者和消费者
import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;//阻塞队列实现生产者和消费者public class BlockQueueTest { public static void main(String[] args) { Bl...
2019-12-05 14:46:37 167
原创 Java多线程 wait和notify方法 实现生产者和消费者
本示例实现生产者和消费者是用wait()和notifyAll()方法,这两个方法的使用比之前的suspend()和resume()方法的优势是在synchronized方法包围的时候会释放锁,不会造成死锁。缺点如果在一个方法中先执行notifyAll(),再执行wait()还是会造成死锁。import java.util.*;public class ThreadCommunicat...
2019-12-05 11:03:07 224
原创 多线程suspend()和resume()方法弃用的原因
在如下代码的情况下suspend()和resume()方法能正常执行。但是它有如下两个问题,很容易造成死锁,导致java将其弃用(建议使用wait和notify,park和unpark): 一、在外面加上synchronized关键字,这样就会造成死锁,因为这两个方法执行后都不释放锁(执行可以吧注释的放开测试)。 二、把下面代码resume()方法和suspend()方法位置换...
2019-12-03 17:23:23 947
原创 JAVA多线程的六种状态实例
//线程状态测试类public class ThreadStaTest { public static void main(String[] args) throws InterruptedException { //一、创建好线程没启动前状态是新建状态 ThreadDemo demo = new ThreadDemo(); Syst...
2019-03-06 21:44:20 190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人