java中多线程的忙循环_java多线程常见面试题

1.java多线程有哪几种实现方式

三种方式:

1.继承Thread类实现多线成

2.实现Runnable接口

3.使用ExecutorService,Callable,Future实现有返回结果的多线程

2.countdownlatch是什么,使用场景

countdownlatch是一个同步工具类,它允许一个或者多个线程一直等待,知道其他线程执行完成之后再执行,适用于一组线程和另一个主线程之间的工作协作。一个主线程等待一组工作线程的任务完毕才继续它的执行。

3.循环栅栏:CyclicBarrier

可以堵住线程的执行,直到所有线程就绪;适用于一组线程需要在特定的事件上达成一致。它可以接收Runnable参数,被释放时执行。

4.信号量Semaphore

信号量有时也称为信号灯,是在多线程环境下使用的一种设施,负责协调各个线程,保证它们能够正确、合理的使用公共资源。通过acquier()和release()获取和释放许可。通过信号量我们还可以控制我们程序的被访问量,比如某一时刻,最多可以允许20个线程访问,超过了这个值其他线程就需要排队等待了。

5.CountDowmLatch、CyclicBarrier、Semaphore比较

CountDownLatch是能使一组线程都跑完了再跑;

CyclicBarrier能够使一组线程在一个时间点上达到同步;可以一起开始执行全部任务或者一部分任务,同事它是可以循环使用的;

Semaphore是只允许一定数量的线程同事执行一段任务

6.Exchanger交换器

Exchanger是用于线程间写作的工具类,Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个 同步点的两个线程可以交换彼此的数据

7.java中的volatile变量是什么

可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的

8.什么是线程安全

代码在多个线程中运行的时候,运行的结果和单线程是一样的

9.线程发生异常的时候会怎么样

1.异常被抛出,程序继续运行

2.没有异常被捕获,该线程停止运行

10.线程时间如何进行通讯

1.共享变量

2.wait,notify

3.Lock,Condition机制

4.管道机制

11.为什么wait,notify和notifyAll这些方法不在thread类里面

java提供的锁是对象级别的不是线程级别的,所以在object里面

12.ThreadLocal变量,volatile变量,synchronized的区别

volatile主要是用来在多线程中同步变量的

ThreadLocal是线程的局部变量,就是一个Map

synchronized关键字是java利用锁的机制自动实现的,一般有同步方法和同步代码块

13.什么是Future,FutureTask

Future就是对具体的Runnable或者C啊拉拉巴勒任务执行结果进行取消,查询是否完成,得到执行结果

FutureTask实现了RunableFuture接口,表示是可以取消的异步运算,可以交给Executor来执行

14.如何避免死锁

互斥条件:一个戏院每次只能被一个线程使用

请求与保持条件:一个线程的请求资源阻塞时候,对已获得资源保持不放

不剥夺条件:线程已获得的资源在未使用完之前不能强行剥夺

循环等待条件:若干个线程之间形成一种头尾想接的等待资源的关系

15.怎么检测一个线程是否拥有锁

用holdsLock()方法

16.ReentrantLock锁

是concurrent包下面的一套互斥锁,添加了一些高级功能

1.等待可中断,正在等待资源的线程可以选择放弃

2.公平锁,多个线程等待资源的时候,必须按照申请的时间顺序获得锁

3.锁绑定多个条件,可以同事绑定对象

17.如何确保T1,T2,T3的执行顺序

可以使用线程类的join()方法,在一个线程中启动另外一个线程,应该钱启动最后一个(T3调用T2,T2调用T1),这样T1就可以先于T3完成

18.多线程中的忙循环是什么

忙循环就是程序员让一个线程循环等待,就是一个空循环,目的是为了保留cpu的缓存,在多核的情况下,一个线程醒来的时候可能在另外一个核里面运行。为了逼毛重建缓存和减少等待时间就可以使用它

19同步代码块抛出异常会发生什么

无论是正常还是异常退出,里面线程都会释放锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值