自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 044_创建线程池有哪几种方式?

newFixedThreadPool(int nThreads)创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。newCachedThreadPool()创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加时,则可以自动添加新线程,...

2020-04-23 17:15:25 346

原创 043_线程的 run() 和 start() 有什么区别?

每个线程都是通过某个特定 Thread 对象所对应的方法 run() 来完成其操作的,方法 run() 称为线程体。通过调用 Thread 类的 start() 方法来启动一个线程。start() 方法来启动一个线程,真正实现了多线程运行。这时无需等待 run() 方法体代码执行完毕,可以直接继续执行下面的代码; 这时此线程是处于就绪状态, 并没有运行。 然后通过此 Thread 类调用方法...

2020-04-23 17:09:20 440

原创 042_notify() 和 notifyAll() 有什么区别?

如果线程调用了对象的 wait() 方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁。当有线程调用了对象的 notifyAll() 方法 (唤醒所有 wait 线程) 或 notify() 方法 (只随机唤醒一个 wait 线程) ,被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。也就是说,调用了 notify() 后只有一个线程会由等待池进入锁池...

2020-04-23 16:55:54 416

原创 041_sleep() 和 wait() 有什么区别?

sleep():sleep() 是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程,等到休眠时间结束后,线程进入就绪状态和其他线程一起竞争cpu的执行时间。因为sleep() 是 static 静态的方法,他不能改变对象的机锁,当一个synchronized块中调用了 sleep() 方法,线程虽然进入休眠,但是对象的机锁没有被释放,其他线程依然无法访问这个对象。...

2020-04-23 16:48:50 86

原创 040_线程有哪些状态?

线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。创建状态:在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。就绪状态:当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。运行状态:线程调度程序将处于就绪状态的线程设置为...

2020-04-23 16:43:49 71

原创 039_说一下 Runnable 和 Callable 有什么区别?

Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。...

2020-04-23 16:36:26 448

原创 038_创建线程有哪几种方式?

Java中创建线程主要有三种方式:继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。通过Runnable接口创建线程类(1)定义runnable接口的实现类,并重写该接口...

2020-04-23 16:31:23 135

原创 037_守护线程是什么?

守护线程 ( 即daemon thread ) ,是个服务线程,准确地来说就是服务其他的线程,这是它的作用——而其他的线程只有一种,那就是用户线程。所以java里线程分2种:守护线程,比如垃圾回收线程,就是最典型的守护线程。用户线程,就是应用程序里的自定义线程。...

2020-04-23 12:11:29 125

原创 036_线程与进程的区别?

进程是资源分配的最小单位,线程是程序执行的最小单位。进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通...

2020-04-22 23:45:18 80

原创 035_并行与并发有什么区别?

并行:多个处理器或多核处理器同时处理多个任务。并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。...

2020-04-22 23:33:50 119

原创 034_怎么确保一个集合不能被修改?

可以使用 Collections.unmodifiableCollection(Collection c) 方法来创建一个只读集合,这样改变集合的任何操作都会抛出 Java.lang.UnsupportedOperationException 异常。示例代码如下:List<String> list = new ArrayList<>();list.add("x");...

2020-04-22 23:31:34 284

原创 033_Iterator 和 ListIterator 有什么区别?

Iterator和ListIterator的区别是:Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。...

2020-04-22 23:25:12 93

原创 032_Iterator 怎么使用?有什么特点?

从一个 Collection 中使用迭代器方法来获取迭代器实例Iterator 使用代码如下:List<String> list = new ArrayList<>();Iterator<String> it = list.iterator();while(it.hasNext()){ String obj = it.next(); System.o...

2020-04-22 22:59:45 259

原创 031_迭代器 Iterator 是什么?

Iterator 接口提供遍历任何 Collection (集合) 的接口,我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。...

2020-04-22 22:30:13 108

原创 030_哪些集合类是线程安全的?

Vector、Hashtable、Stack 都是线程安全的,而像 HashMap 则是非线程安全的,不过在 JDK 1.5 之后随着 Java.util.concurrent 并发包的出现,它们也有了自己对应的线程安全类,比如 HashMap 对应的线程安全类就是 ConcurrentHashMap。...

2020-04-22 22:26:34 188

原创 029_在 Queue 中 poll() 和 remove()有什么区别?

相同点:都是返回第一个元素,并在队列中删除返回的对象。不同点:如果没有元素 remove()会直接抛NoSuchElementException 异常,而 poll()会返回 null。代码示例:Queue<String> queue = new LinkedList<String>();queue.offer("string"); // add方法Syste...

2020-04-22 22:24:34 323

原创 028_Array 和 ArrayList 有何区别?

Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。Array 内置方法没有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。...

2020-04-22 22:15:57 154

原创 027_ArrayList 与 Vector 的区别?为什么要用Arraylist取代Vector呢?

**线程安全:**Vector 使用了 Synchronized 来实现线程同步,是线程安全的,而 ArrayList 是非线程安全的。**性能:**ArrayList 在性能方面要优于 Vector。**扩容:**ArrayList 和 Vector 都会根据实际的需要动态的调整容量,只不过在 Vector 扩容每次会增加 1 倍,而 ArrayList 只会增加 50%。Vector...

2020-04-22 22:12:24 1130 4

原创 026_如何实现数组和 List 之间的转换?

数组转 List:使用 Arrays. asList(array) 进行转换。List 转数组:使用 List 自带的 toArray() 方法。代码示例:// list to arrayList<String> list = new ArrayList<String>();list. add("加油!");list. add("奥利给!");list. to...

2020-04-18 22:01:20 214

原创 025_ArrayList 和 LinkedList 的区别是什么?

ArrayList和LinkedList都实现了List接口,他们有以下的不同点:ArrayList 是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。LinkedList 是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。相对于ArrayList,LinkedList 的插入、...

2020-04-18 19:08:00 138

原创 024_说一下 HashSet 的实现原理?

HashSet 是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单。相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,HashSet 不允许重复的值。...

2020-04-18 18:47:08 789

原创 023_说一下 HashMap 的实现原理?

HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value 保存在 bucket 里。当计算出的 hash 值相同时,我们称之为 hash 冲突,HashMap 的做法是用链表和红黑树存储相同 hash 值的 val...

2020-04-18 18:44:58 232

原创 022_如何决定使用 HashMap 还是 TreeMap?

在 Map 中插入、删除、定位一个元素这类操作,HashMap 是最好的选择,因为相对而言 HashMap 的插入会更快.如果要对一个 key 集合进行有序的遍历,那 TreeMap 是更好的选择。...

2020-04-18 12:49:45 125

原创 021_HashMap 和 Hashtable 有什么区别?

线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!);效率: 因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它;对Null key 和...

2020-04-18 12:49:28 115

原创 020_List、Set、Map 之间的区别是什么

List(对付顺序的好帮手):List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象Set(注重独一无二的性质):不允许重复的集合。不会有多个元素引用相同的对象。Map(用Key来搜索的专家):使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。...

2020-04-18 12:48:44 83

原创 019_Collection 和 Collections 有什么区别?

Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如 List、Set 等。Collections 是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,比如提供的排序方法:Collections. sort(list)。...

2020-04-18 12:47:19 168

原创 018_java 容器都有哪些?

Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示:CollectionListArrayListLinkedListVectorStackSetHashSetLinkedHashSetTreeSetMapHashMapLinkedHashMapTreeMapConcurrentHashMapHashtable...

2020-04-18 12:46:14 257

原创 017_Files的常用方法都有哪些?

Files. exists():检测文件路径是否存在。Files. createFile():创建文件。Files. createDirectory():创建文件夹。Files. delete():删除一个文件或目录。Files. copy():复制文件。Files. move():移动文件。Files. size():查看文件个数。Files. read():读取文件。Files...

2020-04-18 12:43:03 249

原创 016_BIO、NIO、AIO 有什么区别?

BIO:Block IO ,同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单,使用方便,并发处理能力低。NIO:New IO ,同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。AIO:Asynchronous IO ,是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。...

2020-04-18 12:40:13 116

原创 015_java 中 IO 流分为几种?

按功能来分:输入流(input)、输出流(output)。按类型来分:字节流和字符流。字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据...

2020-04-18 12:39:00 206

原创 014_接口和抽象类有什么区别?

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类。类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。抽象类可以在不提供接口方法实现的情况下实现接口。Java接口中声明的变量默认都是final的,抽象类可以包含非f...

2020-04-18 12:38:10 115

原创 013_抽象类能使用 final 修饰吗?

不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾。所以, final 不能修饰抽象类。

2020-04-18 12:37:00 197

原创 012_普通类和抽象类有哪些区别?

普通类不能包含抽象方法,抽象类可以包含抽象方法。抽象类是不能被实例化的,就是不能用new调出构造方法创建对象,普通类可以直接实例化。如果一个类继承于抽象类,则该子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。...

2020-04-18 12:36:44 326

原创 011_抽象类必须要有抽象方法吗?

不需要,抽象类不一定非要有抽象方法;但是包含一个抽象方法的类一定是抽象类。示例代码:abstract class Cat { public static void sayHi() { System. out. println("hi~"); }}上面代码,抽象类并没有抽象方法但完全可以正常运行。...

2020-04-18 12:23:38 443

原创 010_String 类的常用方法都有那些?

indexOf():返回指定字符的索引。charAt():返回指定索引处的字符。replace():字符串替换。trim():去除字符串两端空白。split():分割字符串,返回一个分割后的字符串数组。getBytes():返回字符串的 byte 类型数组。length():返回字符串长度。toLowerCase():将字符串转成小写字母。toUpperCase():将字符串转成大...

2020-04-18 12:22:48 69

原创 009_如何将字符串反转?

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。示例代码:// StringBuffer reverseStringBuffer stringBuffer = new StringBuffer();stringBuffer. append("abcdefg");System. out. println(stringBuffer. rever...

2020-04-18 12:22:27 178

原创 008_String str="i"与 String str=new String(“i”)一样吗?

不一样,因为内存的分配方式不一样。String str=“i"的方式,Java 虚拟机会将其分配到常量池中,如果常量池中有"i”,就返回"i"的地址,如果没有就创建"i”,然后返回"i"的地址;而String str=new String(“i”) 则会被分到堆内存中新开辟一块空间。...

2020-04-18 12:21:28 312

原创 007_java 中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。三者区别:StringBuffer和StringBuilder都继承自抽象类AbstractStringBuilder。 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 存储数据的...

2020-04-18 12:20:41 137

原创 006_String 属于基础的数据类型吗?

String不是基本的数据类型,而是final修饰的java类,java中的基本类型一共有8个,它们分别为为:字符类型:char基本整型:byte,short,int,long浮点型:float,double布尔类型:boolean...

2020-04-18 12:17:34 102

原创 005_java 中的 Math.round(-1.5) 等于多少?

Math.round(-1.5)的返回值是-1。四舍五入的原理是在参数上加0.5然后做向下取整。我们可以通过大量实验看下结果:public class test { public static void main(String[] args){ System.out.println(Math.round(1.3)); //1 System.out.println(Math.rou...

2020-04-18 12:16:49 274

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除