- 博客(20)
- 收藏
- 关注
原创 多线程高并发编程学习笔记四
高并发编程学习笔记四:线程池1.Executor:执行器,interface 用来执行某一个任务的,只有一个方法 void execute(Runnable command)//运行一个实现了runnable的操作,可以交给一个线程使用 e.g: public class MyExecutor implements Executor { @Override...
2019-03-09 18:45:39
220
原创 多线程高并发编程学习笔记三
高并发编程学习笔记三:并发容器/队列1. map/set的选择使用 1. 不需要线程安全 hashmap:无序的key- value 1.创建table来存储entry 2.hashcode(key)得到键值对应该存放的位置 3.用equal方法比较key,如果相同覆盖数据,如果不同接到下面形成链表 treemap:有顺序的红黑树实现的map ...
2019-03-09 18:01:24
209
原创 多线程高并发编程学习笔记二
高并发编程学习笔记二:1. reentrantlock 重入锁 1. reentrantlock可以实现与synchronized一样的功能,synchronized在发生异常的时候,jvm会自动释放锁。但是reentrantlock必须手动释放锁。通常在finally中释放锁。 public class Demo1 { Lock lock...
2019-03-09 17:57:44
209
原创 多线程高并发编程学习笔记一
高并发编程学习笔记一: Java高并发编程主要有三个知识点: 1. synchronizer:同步器,确保各线程之间通讯,同步以保证动作一致 2. 同步容器 3. ThreadPool、executor、callable等1.Synchronized关键字public class Demo { public ...
2019-03-09 17:52:19
199
转载 iterator与ListIterator的区别
Iterator可以用来遍历list与set,ListIterator只能遍历list Iterator只能往前遍历,ListIterator可以往前也可以往后遍历 ListIterator实现了Iterator接口,并增加了增加元素,获取前一个元素索引与后一个元素索引...
2019-01-08 05:16:11
184
转载 什么是迭代器(Iterator)?
为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和获取集合中的元素.该对象就叫做迭代器(Iterator).对 Collection 进行迭代的类,称其为迭代器。还是面向对象的思想,专业对象做专业的事情,迭代器就是专门取出集合元素的对象。但是该对象比较特殊,不能直接创建对象(通过new),该对象是以内部类的形式存在于每个集合类的内部。...
2019-01-08 05:06:39
12136
转载 Java集合类框架的基本接口有哪些?
基本接口有两类Collection类:元素集合,List和Set继承了Collection接口,List是有序元素集合,set是无序元素集合,ArrayList和LinkedList实现了list接口,HashSet实现的是set接口,Set中的元素是不能重复的,List中的元素是可以重复的 Map类:键值对集合,HashTable与HashMap实现了Map类,HashTable是线程安全...
2019-01-08 04:31:22
1682
原创 如何确保N个线程可以访问N个资源同时又不导致死锁?
死锁产生的条件:互斥请求:同一时间段只能有一个线程获取资源锁,其他的需要等待 不剥夺条件:在第一个线程获取到资源锁,没有运行结束的时候,其他线程不能强行剥夺资源锁 请求与保持条件:在线程获得了第一把资源锁的时候,保持自身资源锁并请求另外一个资源锁 循环与等待条件:存在进程循环请求资源锁,自身获得的资源锁被其他线程请求破坏死锁只需要破坏掉其中的任何一个条件,最简单的是破坏循环。通过wai...
2019-01-08 03:57:37
3463
原创 进程和线程的区别是什么?
进程是执行着的应用程序,线程是进程中的执行单元。 进程是资源分配单元,线程是执行单元 进程之间相互独立,同一进程的线程共用进程资源。 进程间通讯通过IPC,同一进程间线程通讯通过写入进程数据段来通讯,需要用到sychronized与voltaile等线程同步手段保持数据的一致性。 线程切换比进程切换快而且所需资源较少。...
2019-01-07 23:58:15
2505
1
原创 接口和抽象类的区别是什么?
1. 接口中的所有方法都是抽象的,抽象类中可以包含非抽象的方法。2. 接口中没有构造函数,抽象类中可以有构造函数3. 类只能单继承但是可以实现多个接口4. 抽象类可以在不实现接口方法的情况下实现接口5. 接口中的成员都是public的,抽象类的成员可以是private和protect的...
2019-01-07 21:51:04
100
原创 Java中的方法覆盖(Overriding)和方法重载(Overload)是什么意思?
Override:子类重写父类的方法(重写要保证:函数名,返回值类型,参数类型,参数数量都相同),实现多态(编译时的多态)//override class Super{ int test (int i){ System.out.println("super sout"); return i; } ...
2019-01-07 21:41:01
1005
转载 什么是自动拆装箱
Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是Integer,从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换Java 为每个原始类型提供了包装类型:- 原始类型: boolean,ch...
2019-01-07 21:28:49
410
原创 Java中是否可以覆盖(override)一个private或者是static的方法?
不可以,1. override:子类重写父类的方法(返回值,方法名,参数都相同)以实现多态。2. private只能够被自身类访问,子类不能访问private修饰的成员,所有不能override一个private方法3. static方法是与类绑定的与任何实例都无关,随着类的加载而加载, static是编译时静态绑定的,override是运行时动态绑定的。形式上static可以over...
2019-01-07 21:20:40
6569
原创 是否可以在static环境中访问非static变量
不可以直接访问,static修饰的变量或者方法是和class绑定的,随着类的加载而加载到静态方法区,调用static方法时并不需要创建对象,而非static变量的访问必须遵循先实例化对象然后通过对象访问的原则,类加载时不一定有对象实例化,所有也就不能访问非static变量,但是假如在static环境中实例化对象然后通过对象进行访问的话是可以的...
2019-01-07 20:55:00
1650
原创 Java知识梳理之JDBC与JPA
JDBC:JDBC提供一种接口,它是由各种数据库厂商提供类和接口组成的数据库驱动,为多种数据库提供统一访问。我们使用数据库时只需要调用JDBC接口就行了。 JDBC的用途:与数据库建立连接、发送 操作数据库的语句并处理结果。 JPA是Java持久层API。它是对java应用程序访问ORM(对象关系映射)框架的规范。为了我们能用相同的方法使用各种ORM框架。 JPA用途:简化...
2018-12-28 19:03:27
289
原创 Java知识梳理之synchronized关键字
1) 当两个或者多个并发线程同时访问一个object中的synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行,其他线程必须要等到当前线程执行完这个代码块之后才能继续执行该代码块。2) 然而,当一个线程访问object中的synchronized(this)同步代码块时,其他线程仍然可以调用object中的其它非synchronized(this)同步代码块。3) 尤...
2018-12-27 00:14:13
128
原创 Java知识梳理之字符流
1. 字符流概念 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字符流 = 字节流 + 编码表。 字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型...
2018-12-24 18:19:23
187
1
原创 Java知识梳理之String与Stringbuffer与StringBuilder之间的区别
1. String类String类是被final修饰的,所有String不能被继承。 String类是不可变的,对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。 String s = "Hello ";s.concat("World!"); //字符串连接System.out.println(s); //输出s,还是"Hello "s ...
2018-12-21 04:47:47
241
原创 Java知识梳理之Stream流操作
1. 基类:InputStream 和 OutputStream字节流主要操作byte类型数据,以byte数组为准,java 中每一种字节流的基本功能依赖于基本类 InputStream 和 Outputstream,他们是抽象类,不能直接使用。字节流能处理所有类型的数据(如图片、avi等)。InputStream 是所有表示位输入流的父类,继承它的子类要重新定义其中所定义的抽象方法。In...
2018-12-21 03:30:40
241
原创 Java知识梳理之HashMap的具体存储机制
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至HashSet 本身就采用 HashMap 来实现的。 HashMap存储机制...
2018-12-20 21:13:49
300
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人