吊打面试官!Java多线程并发 108 道题,你能答对多少?(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

27、新建状态(NEW)

28、就绪状态( RUNNABLE)

29、运行状态(RUNNING)

30、阻塞状态(BLOCKED)

31、线程死亡(DEAD)

32、终止线程4种方式

33、start与run区别

34、JAVA后台线程

35、什么是乐观锁

36、什么是悲观锁

37、什么是自旋锁

38、Synchronized同步锁

39、ReentrantLock

40、Condition类和0bject类锁方法区别区别

41、tryLock 和lock和lockInterruptibly 的区别

42、Semaphore信号童

43、Semaphore与Reentr antLock区别

44、可重入锁(递归锁)

45、公平锁与非公平锁

46、ReadWriteLock 读写锁

47、共享锁和独占锁

48、重量级锁(Mutex Lock)

49、轻量级锁

50、偏向锁

51、分段锁

52、锁优化

53、线程基本方法

54、线程等待(wait)

55、线程睡眠( sleep)

56、线程让步(yield)

57、线程中断(interrupt)

58、Join等待其他线程终止

59、为什么要用join0方法?

60、线程唤醒(noti fy)

61、线程其他方法

62、进程

63、上下文

64、寄存器

65、程序计数器

66、FCB-切换桢 ”

67、上下文切换的活动

68、引起线程上下文切换的原因

69、同步锁

70、死锁

71、线程池原理

72、线程复

73、线程地的组成

74、拒绝策略

75、Java线程池工作过程

76、JAVA阻塞队列原理

77、Java中的阻塞队列

78、ArrayBlockingQueue(公平、非公平)

79、LinkedBlockingQueue(两个独立锁提高并发)

80、PriorityBlockingQueue(compareTo 排序实现优先)

81、DelayQueue ( 缓存失效、定时任务)

82、Synchr onousQueue (不存储数据、可用于传递数据)

83、Linke dTr ansferQueue

84,Linke JB1ocki ngDeque

85、在java中守护线程和本地线程区别

86、线程与进程的区别?

87、什么是多线程中的上下文切换?

88、死锁与活锁的区别,死锁与饥饿的区别?

89、Java中用到的线程调度算法是什么?

90、什么是线程组,为什么在Java中不推荐使用?

91、为什么使用Executor 框架?

92、在Java 中Executor 和Executors 的区别?

93、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?

94、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?

95、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?

96、什么是Executors 框架?

97、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?

98、什么是Callable 和Future?

99、什么是FutureTask?使用 ExecutorService 启动任务。

100、什么是并发容器的实现?

101、多线程同步和互斥有几种实现方法,都是什么?

102、什么是竞争条件?你怎样发现和解决竞争?

103、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?

104、Java 中你怎样唤醒一个阻塞的线程?

105、在Java 中CycliBarriar和CountdownLatch有什么区别?

106、什么是不可变对象,它对写并发应用有什么帮助

107、Java中用到的线程调度算法是什么?

108、什么是线程组,为什么在Java中不推荐使用?

1. Java中实现多线程有几种方法

继承Thread类;

实现Runnable接口;

实现(allable接口通过FutureTask包装器来创建Thread线程;

使用ExecutorService. Callable. Future实现有返回结果的多线程(也就是使用了ExecutorService来管理前面的三种方式)。.

2. 在java中守护线程和本地线程区别?

java中的线程分为两种:守护线程(Daemon)和用户线程(User) 。

任何线程都可以设置为守护线程和用户线程,通过方法Thread. setDaemon(bool on); true则把该线程设置为守护线程,反之则为用户线程。Thread .setDaemon0必须在Thread.start()之前调用,否则运行时会抛出异常。

两者的区别:

唯一的区别是判断虚拟机(VM)何时离开, Daemon是为其他线程提供服务,如果全部的User Thread已经撤离,Daemon没有可服务的线程,JVM撒离。也可以理解为守护线程是JM自动创建的线程(但不一定),用户线程是程序创建的线程;比如JVM的垃圾回收线程是一个守护线程, 当所有线程已经撤离,不再产生垃圾,守护线程自然就没事可干了,当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。

3. 线程与进程的区别?

进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。

一个程序至少有一一个进程,-一个进程至少有一个线程.

4. 什么是多线程中的上下文切换?

多线程会共同使用–组计算机上的CPU,而线程数大于给程序分配的CPU数量时,为了让各个线程都有执行的机会,就需要轮转使用CPU.不同的线程切换使用CPU发生的切换数据等就是上下文切换.

5. 死锁与活锁的区别,死锁与饥饿的区别?

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
并且小编也已经将其整理成PDF啦

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-LzcWqtVM-1713313171450)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值