自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池的七大参数及功能(面试题)

线程工厂(threadFactory):生成线程池中的工作线程的线程工厂,可以定制线程对象的创建,比如线程名字,是否守护线程等。ThreadPoolExecutor.CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务。拒绝策略(handler):当队列满了并且工作线程超出线程池的最大线程数时,会触发拒绝策略,最大线程数(maximumPoolSize):线程池能容纳同时执行的最大线程数。核心线程数(corePoolSize):线程池内常驻的核心线程数。

2023-11-23 15:32:44 75

原创 线程的生命周期、状态、实现

调用线程的start方法,此线程进入就绪状态,当前线程sleep方法结束,其他线程join结束,等待用户输入完毕,某个线程拿到对象锁,这些线程也将进入就绪状态。3、其他阻塞:运行的线程执行了sleep或join方法或发出I/O请求时,jvm会把该线程设置为阻塞状态,当 sleep状态超时、join等待线程终止或超时、I/O处理完毕 这三种情况时,线程重新转入就绪状态。:线程对象创建后,其他线程调用该对象的start方法,目前状态为可运行的线程池中,等待获取CPU使用权。

2023-11-23 00:10:00 37

原创 哪些线程需要考虑线程安全的情况

第四种:使用其他类时,如果该类的注释声明了不是线程安全的,那么就不该再多线程种使用,而应该考虑其对应线程安全的类,或者对其做一定处理保证线程安全,比如HashMap就不是线程安全,但可以替换成ConCurrentHashMap。第二种:依赖时序的情况下,主要可能问题是,数据读取后,还有可能被1其他线程修改,可以用synchronized锁。第一种:访问共享资源或者变量时,会有并发风险,比如对象的属性,静态变量,共享缓存,数据库等。

2023-11-22 23:19:25 68

原创 start和run的区别(面试题)

第二个区别:run方法又名线程体,里面包含具体要执行的业务代码,当调用时,如果当前线程时间片没有用完,会立刻执行run方法里的代码;而调用start方法时,是启动一个线程并把线程状态设置为就绪状态,并不会立即执行。当调用第一个start方法后,线程状态会从新建(new)状态变成就绪(runnable)状态,此时再次调用时,jvm就会判断当前线程已不在新建状态,所以会抛出异常(第一个区别:调用start方法是开启一个新线程来执行,调用run方法是执行普通方法run,不开启新的线程。start只能调用一次。

2023-11-22 22:54:25 399

原创 wait和sleep的区别(面试题)

sleep属于Thread类的静态本地方法,一般是用在当前线程休眠,或轮询暂停操作,使用sleep方法可以让当前线程休眠,时间一到当前线程就继续执行,任何地方都可以使用,但需要捕获interruptedException异常。wait属于Object类的本地方法,一般用于多线程之间的通信,使用wait必须在synchronized块里面,同样需要捕获异常,而且需要获取对象的锁。当切换线程时,sleep会让出cpu执行时间而且强制上下文切换,而wait则不一定,可能还有机会重新竞争到锁继续执行。

2023-11-22 22:14:39 17

原创 多线程实现、状态、应用场景

实现方式:继承Thread类、实现Runnable接口、实现Callable接口。需要线程返回结果、抛异常用callable,但需要注意获取返回结果是同步方式。应用场景:要求线程返回结果,不抛异常,需要继承其他类都可以使用。或者:创建-运行-阻塞-等待-超时等待-终止。需要继承其他类可使用Runnable和Callable。线程状态:创建-就绪-运行-阻塞-死亡。

2023-11-21 20:50:45 18

原创 并发情况下的类

4.Executor:管理线程池的接口,提供了一种更高级的抽象,让我们及那个任务提交给线程池,而不用关心线程管理的细节;1.ReentrantLock:可重入的互斥锁,作用类似于synchronized关键字,提供了更多的灵活性。2.Semaphore是基于计数器的同步工具,作用是控制对共享资源的访问,可以用来限制并发线程的数量;3.CountDownLatch:同步工具,作用是允许一个或者多个线程等待其他线程完成操作;

2023-11-21 20:46:54 17

原创 引用和指针的区别

由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,因此引用很安全。const指针虽然不能改变指向,但仍然存在空指针,并且有可能产生野指针(即多个指针指向一块内存,free掉一个指针之后,别的指针就成了野指针)。答:引用不可以为空,指针可以为空,引用不可以改变只想,指针可以改变指向,引用的大小指向的是变量的大小,指针指的是本身的大小,4个字节,引用比指针更安全,总而言之,指针只想一块内存,它的内容是之内存的地址,而引用则是某块内存的别名,引用不改变指向。

2023-11-21 19:08:23 20

原创 流、字节、字符流的区别

InputStream字节输入流:FileInputStream、PipedInputStream、ByteArrayInputStream、BufferedInputstream、SequenceInputStream、DataInputStream、ObjectInputStream。Writer:字符输出流FileWriter、PipedWriter、CharArrayWriter、BufferedWriter、InputStreamWriter、PrintWriter。按功能功能:节点流和处理流。

2023-11-21 19:07:46 26

原创 抽象类和接口的区别

抽象类的成员变量可以是任何类型,而接口只能是public、static、final类型的。抽象类可以存在普通成员函数,接口只能存在public和abstract方法。抽象类只能继承一个,接口可以实现多个,所以接口可以间接实现多重继承。接口的设计目的是对类的行为进行约束,而抽象类的设计目的是代码复用。如果是关注事物的本质就用抽象类,如果关注事务的操作就用接口。抽象类强调的是所属关系,而接口强调特定功能的实现;

2023-11-21 19:07:14 25

原创 this与super的区别

不同点:super主要是父类或者不同类中的调用,this是对同一类的重载的调用。相同:都是在构造函数第一行调用,都是指对象,都不能再static环境内使用。

2023-11-21 19:06:40 16

原创 JAVA集合(面试题)

集合分为两种,单列集合(collection)和双列集合(map)

2023-11-21 19:04:04 19

原创 Object常用方法

notifyall,(唤醒在此对象监视器上等待的所有线程).notify,(唤醒在此对象监视器上等待的单个线程).hashcode(返回对象所在的物理地址),.wait(会引出wait和sleep区别),.equals(比较两个对象的内容是否相等).registerNatives(不重要).clone(另存一个当前存在的对象),.getClass(获取运行时的类型),.toString(返回字符串类型),.fianlize(引出垃圾回收机制)

2023-11-21 17:57:33 12

原创 泛型(面试题)

用处:可以构建泛型集合。本来List返回类型是Object,需要手动转换,使用泛型后编译器就可以自动转换;强制性的让我们只能存储对应类型的元素,否则编译就不通过。把所操作的数据类型被注定为参数,根据动态传入进行处理。泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。常用的泛型标识 : T,E,K,V。本质:就是把类型参数化。

2023-11-21 17:50:47 20

原创 创建新对象的五种方式

Class类的newInstance使用的是类的public的无参构造器。要使用clone方法,我们必须先实现Cloneable接口并复写Object的clone方法(因为Object的这个方法是protected的,你若不复写,外部也调用不了呀)。无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造器(无参的和有参的)。

2023-11-21 17:49:43 128

原创 java的复合数据类型

因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。String不属于8种基本数据类型,String是一个对象。数组,结构体,指针,引用,枚举,共同体。

2023-11-21 17:47:21 41

原创 java的基本数据类型

char: 2个字节,16位,字符表示Unicode(万国码)编码表中的每一个符号,每个符号使用单引号引起来,其中前128个符号和ASCII表相同。float: 4个字节,32位,单精度,能精确到6~7位,声明一个小数类型,要加F或者f,建议加F。long: 8个字节,64位,long类型表示long类型常量,要加L或者l,建议加L。double:8个字节,64位,双精度,能精确到15~16位,小数类型默认是double类型。

2023-11-21 17:46:42 18

原创 #{}和${}的区别(面试题)

{}是预编译处理,可以防止SQL注入。

2023-11-21 17:44:09 11

原创 ==和equals的区别(面试题)

=:是一个比较运算符,对于基本数据类型,比较的是两者的值,而对于引用类型,比较的是地址值(是否为同一个对象的引用)equals:()是一个方法,只能比较引用数据类型,重写前比较的是地址值,重写后比一般比较对象的属性。

2023-11-21 17:40:39 17

原创 重载和重写的区别

重写:重写就是在子类把父类本身有的方法重写一遍在运行时实现多态,发生子类和父类之间,要求子类被重写的方法和父类被重写的方法有相同的参数列表,有兼容的返回类型,子类访问修饰符的限制必须大于父类被重写方法的访问修饰符(重载:在编译时实现多态,是在同一个类里面,同名不同属性(参数列表)的方法,重载对返回类型没有要求;

2023-11-21 17:39:12 20

原创 String、Stringbuffer、Stringbuilder区别(面试题)

String、Stringbuffer、Stringbuilder区别(面试题)

2022-12-10 20:23:43 150

原创 String和StringBuffer区别(面试题)

String和StringBuffer区别(JAVA面试题)

2022-12-10 20:11:13 290 1

原创 ==和equals的区别(面试题)

==和equals的区别(面试题)

2022-03-23 22:02:55 557

空空如也

空空如也

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

TA关注的人

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