【java】问一个关于多线程的面试问题?

图片说明

图上的集中方法我都查过了,但是不懂他们之间的区别以及应用场景,还有最后那俩问题,求大神解答

1:应该是问你,第一种情况下。数据结果会不正确。
2:abcde是各种并发处理的方式。你需要记录开始时间和结束时间,看用各种并发方式,哪个最快能得出结果。
3:Semaphore又称信号量,是操作系统中的一个概念,在Java并发编程中,信号量控制的是线程并发的数量。用于管理一组资源。其内部是基于AQS的共享模式,AQS的状态表示许可证的数量,在许可证数量不够时,线程将会被挂起;而一旦有一个线程释放一个资源,那么就有可能重新唤醒等待队列中的线程继续执行。
4:结合abcde的运行时间,哪个更快就是哪个性能更好。
5:优化方式:没想到(用性能最好的方式)。

Semaphore又称信号量,是操作系统中的一个概念,在Java并发编程中,信号量控制的是线程并发的数量。用于管理一组资源。其内部是基于AQS的共享模式,AQS的状态表示许可证的数量,在许可证数量不够时,线程将会被挂起;而一旦有一个线程释放一个资源,那么就有可能重新唤醒等待队列中的线程继续执行。