
java知识点
Goergiana Cavendish
青白随人怜阮眼,行藏由我养陶腰
展开
-
String,StringBuffer,StringBuilder区别
string 是只读字符串,即引用堆区中的字符串不能被改变举例: String str ="abc"; str = "bcd";对于str 来说,abc字符串并没有被改变,而是开辟了新的空间——bcd。再把bcd的空间地址赋给了str。所以str打印结果是bcd。但是并不意味着abc的值变了。这是直接赋值的方式,如果通过java传参,调用方法的形式改变str,如: Str...原创 2019-04-21 21:39:37 · 186 阅读 · 5 评论 -
多线程之Semaphore信号量理解
Semaphore介绍:Semaphore是一个计数信号量,本质是一个共享锁。线程可以通过acquire()来获取信号量许可。举个例子,假设初始化时给定一个信号量值,比如是5,线程调用acquire()方法时,判断这个信号量是否大于0,如果大于0就把信号量的值减1,然后继续执行。如果不大于0,那么就会阻塞。知道其他线程调用releas()方法,释放一个信号量。其实就和PV操作一样...原创 2019-07-29 18:57:11 · 311 阅读 · 1 评论 -
多线程并发之CyclicBarrier
CyclicBarrier介绍:位于java.util.concurrent并发包下,是一个工具类。CyclicBarrier是循环栅栏的意思,它能阻塞一组线程直到某个事件发生。等到释放这些线程之后,CyclicBarrier还可以重复用,所以是循环栅栏比如我们一起包了车去游玩,有些人早早到了有些人准时到,有些人迟到。但是无论怎样都要等所有人都齐了,车才能开,这个车就是CyclicBarrie...原创 2019-07-29 18:32:25 · 388 阅读 · 1 评论 -
多线程的锁之ReentrantLock
ReentrantLock介绍:ReentrantLock是一个互斥锁,可重入锁。也被称为独占锁,即ReentrantLock在同一时间只能被一个线程持有实现了Lock接口的类,而且也是jdk中唯一实现了Lock接口的类,其中可重入的意思是,单个线程可以重复获取锁ReentrantLock分为公平锁和非公平锁。ReentrantLock是通过一个FIFO的等待队列管理获取该锁的所有线程的。...原创 2019-07-29 18:07:24 · 446 阅读 · 1 评论 -
多线程之sleep和wait的区别
sleep:使当前线程睡眠,但是并不释放锁sleep是Thread类的方法sleep可以用在任何地方sleep必须捕获异常wait:使当前进程等待,但是释放锁。wait是Object类的方法wait,包括notify和notifall只能在synchrnized修饰的方法或代码块中使用sleep不需要捕获异常关于释放锁的理解:你在人工售票口买票,sleep方法只是让你站在买票...原创 2019-07-29 17:40:52 · 258 阅读 · 0 评论 -
多线程之Callable和Future
Callable创建线程可以继承Thread类,重写run方法,也可以使用匿名内部类,也可实现Runnable接口,但是实现Runnable类,重写run方法并没有返回值。从JDK1.5之后,java提供Callable接口,里面只有一个call方法作为线程执行体。实现Callable接口,重写call方法就可以创建一个线程,与run方法相比,Call方法更强大。→ call方法可以有返回值...原创 2019-07-29 17:32:37 · 251 阅读 · 1 评论 -
多线程的锁之线程池核心参数
核心构造方法:ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlokingQueueworkQueue){}重要的参数:1, corePoolSize:核心线程数,2, maximumPoolSize:最大线程数3, keepAliveTime , 存活时间...原创 2019-07-29 17:00:44 · 251 阅读 · 1 评论 -
多线程的锁之悲观锁乐观锁的对比学习
悲观锁:读取数据之前,假设会发生并发冲突,所以从一开始就为了防止冲突,在获取数据的时候进行加锁,确保自己使用的过程中不会被修改,使用完成之后在进行锁的释放。典型的是Synchronized乐观锁:假定不会发生数据冲突,所以获取数据的时候不加锁,但是在提交数据的时候,会判断是否被修改过,如果被修改过则不进行数据更新,如果判断没被其他线程修改,则进行数据更新。乐观锁底层使用CAS无锁机制实现的CA...原创 2019-07-29 16:17:01 · 220 阅读 · 1 评论 -
Volatile为什么能保证禁止重排序
上一篇提到了内存屏障,volatile通过插入读屏障和写屏障保证可见性,在volatile禁止重排序上,也是通过内存屏障实现的。因为内存屏障可以使一些指令按照特定顺序执行。volatile禁止指令重排序的规则: 1.当第二个操作是voaltile写时,无论第一个操作是什么,都不能进行重排序 2.当地一个操作是volatile读时,不管第二个操作是什么,都不能进行重排序 3.当第一个操作是...原创 2019-07-29 15:59:44 · 1895 阅读 · 6 评论 -
Volatile如何保证可见性
volatile是java虚拟机提供的轻量级的同步机制,能够保证内存共享变量的可见性。那么volatile是如何保证可见性的呢?首先要知道内存屏障是什么,内存屏障是一个CPU指令,内存屏障是这样的指令1,确保特定操作执行的顺序2,影响一些数据的可见性,编译器和CPU可以保证输出结果一样的前提下对指令进行重排序,使得性能优化,当插入一个内存屏障,相当于告诉CPU和编译器,先于这个命令的必须先...原创 2019-07-29 15:36:04 · 4448 阅读 · 4 评论 -
对于原码补码反码的理解
对于正数来说,原码反码补码都一样不管是正数、负数,在底层都是以补码存在的以byte b = 13为例:它的原码、反码、补码、都一样 以byte b = 13 为例子,展示在内存中的反码,补码,原码13用二进制表示是00001101反码是把0和1反过来,即:11110010补码是反码+ 1 即:11110011补充:数据在底层的存储格式是以补码的形式存在补码的重要性:补码使得符号...原创 2019-06-30 21:43:15 · 2365 阅读 · 5 评论 -
解决Unhandled Exception
当出现这个错误的时候说明调用的方法在方法声明上已经声明了会抛异常,那么在调用时候就必须做处理处理方式一:try -catch方式处理方式二:向上一层抛出异常...原创 2019-07-12 20:56:10 · 12249 阅读 · 1 评论 -
Java多线程-join()方法
什么是join()方法:在Thread.java中定义,作用是让当前线程等待子线程运行结束之后才能继续运行一 源码分析:join方法源码:public final void join() throws InterruptedException {join(0);}public final synchronized void join(long millis)throws Interr...原创 2019-06-23 21:43:36 · 291 阅读 · 5 评论 -
cmd识别java命令却不识别javac
识别java却不识别javac这是因为路径没有配置好第一开始我试了很多种方法,比如在path中把%JAVA_HOME%\bin 和%JAVA_HOME%\jre\bin路径分成两行,且中间没有;可惜还是不行后来发现应该是我的java路径写错了如果你在cmd中输入java -version能出来版本配置信息,说明你的java已经 安装配置过了然后通过java -verbose命令,在输出的...原创 2019-05-26 21:38:57 · 12087 阅读 · 4 评论 -
MySql与JDBC编程
原创 2019-05-19 21:33:06 · 330 阅读 · 5 评论 -
J.U.C学习
是一个并发库原创 2019-05-05 21:52:57 · 197 阅读 · 4 评论 -
Java多线程———创建
一,继承Thread类创建线程类①定义Thread子类,重写该类的run()方法,run()方法代表了线程需要完成的任务②创建Thread子类实例,即线程对象③,调用线程对象的start()方法启动该线程 public class FirstThread extends Thread{ private int i; public void run(){ ...原创 2019-04-28 21:36:06 · 307 阅读 · 5 评论 -
多线程并发之wait()和await()区别
wai()是Object类提供的,一般与synchronized联合使用。调用wait之后会释放锁,导致线程等待。唤醒进程使用notify()或者notifyAll()await()Condition类是当中的,一般与Lock联合使用。举例:synchronized(obj){ obj.wait();//消费方没东西了,等待}synchronize(obj){ obj.no...原创 2019-07-29 21:04:44 · 16426 阅读 · 2 评论