- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 并发编程学习之Lock同步锁
一、简介引出Lock同步锁之前,先了解一下synchronized同步的一些缺陷:如果一段代码被synchronized锁住,那么当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁。如果某个时刻获得锁的线程发生阻塞现象,那么这把锁会被它一直持有,而其他线程永远无法获取锁,正常来说,不能让其他线程永远在那里等待。使用Lock锁的话,提供了一种机制可...
2020-02-29 10:25:19 558
原创 并发学习之CyclicBarrier循环栅栏
一、简介前面已经简单介绍了CountDownLatch闭锁,本文的CyclicBarrier其实跟闭锁差不多,当然还是存在一些区别。官网介绍如下:CyclicBarrier是一种同步辅助工具,允许一组线程彼此等待到达一个共同的障碍点。CyclicBarrier在包含固定大小的线程的程序中非常有用,这些线程有时必须彼此等待。这个屏障被称为循环屏障,因为它可以在等待的线程被释放后重新使用。...
2020-02-29 09:00:13 675
原创 JUC学习之CountDownLatch入门
一、简介官网的介绍如下:CountDownLatch:允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。CountDownLatch用给定的计数初始化。await方法阻塞,直到由于countDown()方法的调用而导致当前计数达到零,之后所有等待线程被释放,并且任何后续的await调用立即返回。CountDownLatch使一个线程等待其他线程各自执行完毕后再...
2020-02-27 20:25:46 272
原创 并发编程学习之volatile关键字
一、简介volatile,是Java中的一个关键字。被volatile修饰的变量,在多个线程中保持可见性,注意,volatile不保证原子性,这也是volatile与synchronized的区别之一。那么什么是可见性呢?可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。要了解volatile的工作原理,首先需要了解一下Java内存模...
2020-02-27 19:51:12 310
原创 并发编程学习之Callable接口
一、简介Callable接口,其实跟Runnable接口的使用差不多,只不过Callable接口可以有返回值,返回结果并可能引发异常的任务。但是,Runnable不返回结果,也不能抛出checked异常。二、源码@FunctionalInterfacepublic interface Callable<V> { /** * Computes a res...
2020-02-26 20:11:50 495
原创 并发编程学习之线程8锁
一、简介所谓线程八锁,其实就是就是线程锁的8种情况,对应于是否加上synchronized,是否加上static等8种常见情况,具体见下面详解。二、线程8锁第一种情况: 两个线程调用同一个对象的两个普通同步方法,先打印one还是two?/** * 线程八锁第一种情况: 两个线程调用同一个对象的两个普通同步方法,先打印one还是two? * <p> * 运行结果: ...
2020-02-26 20:03:20 799 3
原创 面试题之类加载器
一、简介本文总结一些关于JVM中类加载器相关的面试题。二、什么是类加载器?类加载器,负责加载class字节码文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由执行引擎Execution Engine决定。类加载器的工作图大体如...
2020-02-22 20:01:10 1313
原创 Git合并分支代码到主分支的方法总结
一、简介在使用Git开发过程中,我们一般都是在develop开发分支上进行开发,应该比较少会在master分支上直接开发的,一般如果开发分支进行了一次大版本的更新并且经过测试后,我们就需要将代码同步到master上去。本文将总结一下如何使用git将develop的代码合并到master_bak分支(其中master_bak只是分支名称,实际上是合并到master,这里只是作为测试才用的mast...
2020-02-17 10:11:40 12930
原创 面试题之对象创建的五种方式
一、简介在Java中,创建对象的方式有五种,分别为:通过new()调用构造方法创建对象; 通过反射xxx.getClass().newInstance()创建对象; 通过反射construct.newInstance()创建对象; 通过xxx.clone()克隆方法创建对象; 通过readObject()反序列化创建对象;下面通过示例分别说明五种方法。二、示例首先创建一个...
2020-02-11 21:04:56 411
原创 面试题之wait()和sleep()方法区别
一、简介sleep()和wait()方法区别 方法 sleep() wait() 概念 使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行) 导致当前线程等待,直到另一个线程调用该对象的notify()方法或notifyAll()方法 方法属于哪一个类...
2020-02-09 15:30:48 773
原创 面试题之Java中线程的几种状态
一、简介Java线程主要有以下六种状态: 状态名称 说明 NEW 初始状态,线程刚被构建,但是还没有调用start()方法 RUNNABLE 运行状态,Java系统系统中将操作系统中的就绪和运行两种状态笼统地称为“运行中” BLOCKED ...
2020-02-09 15:07:04 619
原创 面试题之Error和Exception总结
一、异常体系简介异常机制其实是帮助我们找到程序中的问题,异常的根类是 java.lang.Throwable ,其下有两个子类:java.lang.Error java.lang.Exception概念:Error:程序中发生的严重错误Error,无法处理的错误,只能事先避免; 如内存溢出等 Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是...
2020-02-08 15:36:51 504
原创 面试题之存储过程
一、什么是存储过程简单来说,存储过程就是一组预先编译好的sql语句集。二、创建语法create procedure 存储过程名(参数列表)begin//....存储过程体end;参数列表主要有三种形式:IN : 需要调用者传入 OUT : 作为返回值 INOUT : 调用者传入参数,对应的可以有返回值注意点:由于sql语句默认以";"分号作为分隔符,因此存储过...
2020-02-06 10:27:00 17537 1
原创 面试题之触发器
一、 什么是触发器?数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(insert,update,delete)在指定的表上发出时,就是执行触发器中定义的语句序列。create trigger first_triggerafter inserton empbegindbms_output.put_line("新增成功");end;...
2020-02-03 19:23:37 1518
zipkin-server jar.zip
2020-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人