斗鱼java岗面经分享(社招)

1、Semaphore 有什么作用

Semaphore就是一个信号量,它的作用是限制某段代码块的并发数。Semaphore有一个构造

函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出

了n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。由此可以看出

如果Semaphore构造函数中传入的int型整数n=1,相当于变成了一个synchronized了。45、2.Executors 类是什么?

Executors为Executor,ExecutorService,ScheduledExecutorService,ThreadFactory和Callable

类提供了一些工具方法。Executors可以用于方便的创建线程池

3、线程类的构造方法、静态块是被哪个线程调用的

这是一个非常刁钻和狡猾的问题。请记住:线程类的构造方法、静态块是被new这个线程

类所在的线程所调用的,而run方法里面的代码才是被线程自身所调用的。

如果说上面的说法让你感到困惑,那么我举个例子,假设Thread2中new了Thread1,main

函数中new了Thread2,那么:

(1)Thread2的构造方法、静态块是main线程调用的,Thread2的run()方法是Thread2自

己调用的

(2)Thread1的构造方法、静态块是Thread2调用的,Thread1的run()方法是Thread1自

己调用的

4、同步方法和同步块,哪个是更好的选择?

同步块,这意味着同步块之外的代码是异步执行的,这比同步整个方法更提升代码的效率。

请知道一条原则:同步的范围越小越好。

5、Java 线程数过多会造成什么异常?

 

以上几个就是我印象比较深刻的被提到的问题了,其他的我基本上记不太清楚了,这几题先总结一下。

 


#斗鱼##java工程师##面经##社招#
全部评论

相关推荐

评论
1
7
分享
牛客网
牛客企业服务