java多线程面试总结

创建线程的方式有哪些?

1.继承Thread类,重写run方法。2.实现Runnable接口,实现run方法。3.实现Callable接口,实现call方法,结合FutureTask。(可以获取线程的返回值)4.线程池创建线程。

线程的状态?

new创建线程是新建状态;执行.start(),进入可执行状态,获取到cup执行权力,就运行;若没有获取锁资源,会进入阻塞状态;执行wait方法,等待状态(需要手动唤醒,释放锁资源);执行sleep方法,计时等待状态;run方法执行完成,死亡状态。

java中wait与sleep方法的不同?

相同点:wait与sleep都会让线程放弃cup的执行权力,进入阻塞状态。

不同点:wait方法是Object类中的,执行wait方法需要手动用notify或notifyAll唤醒;wait方法必须先获取对象锁才能执行;wait方法释放锁对象。sleep是Thread的静态方法;sleep不需要手动唤醒,到时间自动唤醒;sleep是静态方法,所以无需锁就可以执行;sleep不释放锁。

synchronized关键字底层原理?

synchronized采用互斥的方式让同一时刻最多只有一个线程获取锁。它底层由Monitor实现,Monitor中有三个属性,onwer,entrylist,waitset。当来一个线程的时候,先判断onwer是否有关联获取锁的线程,没有直接关联当前线程,若有,则进入entrylist(存放没有获取锁而阻塞的线程);如果执行了wait,sleep方法,进行waitset(进入等待状态的线程);

synchronized锁的形式?

Synchronized是一种互斥锁,同一时刻最多一个线程获取锁。

Synchronized锁有三种形式,分别为重量级锁、轻量级锁、偏向锁。

重量级锁:多线程环境中发生竞争,synchrinized锁就为重量级锁,底层是monitor实现的(jvm对象)

轻量级锁:多线程环境中,没有竞争锁,线程是错开时间加锁。一个线程获取锁,然后释放,下一个线程再获取锁释放。

偏向锁:很长一段时间内,一个线程多次获取同一个对象锁。

线程池的核心参数?

核心线程数

最大线程数(临时线程数=最大线程数-核心线程数)

临时线程最大存活时间

临时线程最大存活时间单位

阻塞队列 (ArrayBlokingQueue,LinkedBlokingQueue)

线程工厂

拒绝策略 (直接抛出异常(默认);直接删除队列中第一个任务;直接放弃当前任务;用主线程执行)

流程:当来一个任务时,会先判断核心线程是否没有空闲的。若有空闲的,交给核心线程执行;若没有,会判断阻塞队列是否满了。若阻塞队列没有满,进入阻塞队列;若满了,新建临时线程。若达到最大线程数,则会触发拒绝策略。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到Java高级开发面试题时,以下是些常见的问题和答案: 1. 什么是Java的反射机制? Java的反射机制允许程序在运行时动态地获取类的信息并操作类的成员。通过反射,可以在运行时创建对象、调用方法、访问字段等。 2. 什么是Java的泛型? Java的泛型是一种参数化类型的概念,它允许在编译时指定类或方法可以操作的数据类型,提高代码的重用性和类型安全性。 3. 什么是Java的注解? Java的注解是一种元数据,它可以用于给程序中的代码添加额外的信息。注解可以用于编译时进行静态检查、运行时进行动态处理,或者生成额外的代码。 4. 什么是Java多线程Java多线程是指在一个程序中同时执行多个线程,每个线程都有自己的执行路径。多线程可以提高程序的并发性和响应性。 5. 什么是Java的异常处理机制? Java的异常处理机制允许程序在出现错误或异常情况时进行处理,以保证程序的正常执行。通过try-catch语句块,可以捕获并处理异常,避免程序崩溃。 6. 什么是Java的IO流? Java的IO流是用于处理输入和输出的机制。它提供了一组类和接口,用于读取和写入数据。IO流可以用于文件操作、网络通信等。 7. 什么是Java的集合框架? Java的集合框架是一组用于存储和操作数据的类和接口。它提供了各种数据结构,如列表、集合、映射等,以及对这些数据结构进行操作的方法。 8. 什么是Java的设计模式? Java的设计模式是一套被广泛应用于软件开发中的解决问题的经验总结。它提供了一些常见的设计思想和模式,如单例模式、工厂模式、观察者模式等。 9. 什么是Java的JVM? Java的JVM(Java Virtual Machine)是Java虚拟机的缩写,它是Java程序运行的环境。JVM负责将Java字节码转换为机器码,并提供内存管理、垃圾回收等功能。 10. 什么是Java的并发编程? Java的并发编程是指在多线程环境下编写程序,以实现并发执行和共享资源的安全访问。Java提供了一些并发编程的工具和类,如锁、条件变量、线程池等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值