- sleep , join() /yiled() 的区别
sleep 让线程睡眠指定时间, 会释放cpu时间片
join, wait/notify, 让线程的执行结果可见
yiled 让出时间片. -> 触发重新调度.
sleep(0) -> 触发一次切换 - Java中能够创建volatile数组吗?
可以创建, Volatile 对于引用可见,对于数组中的元素不具备可见性。
// volatile 缓存行的填充. ->性能问题 - Java中的++操作是线程安全的吗?
不是线程安全的, 原子性、有序性、可见性。
++操作无法满足原子性 - 线程什么时候会抛出InterruptedException()
t.interrupt() 去中断一个处于阻塞状态下的线程时(join/sleep/wait) - Java 中Runnable和Callable有什么区别
- 有T1/T2/T3三个线程,如何确保他们的执行顺序
join - Java内存模型是什么?
JMM是一个抽象的内存模型。
它定义了共享内存中多线程程序读写操作的行为规范:在虚拟机中把共享变量存储到内存以及从内
存中取出共享变量的底层实现细节。通过这些规则来规范对内存的读写操作从而保证指令的正确
性,它解决了CPU多级缓存、处理器优化、指令重排序导致的内存访问问题,保证了并发场景下的
可见性。 - 什么是线程安全
原子性、有序性、可见性(硬件层面(CPU高速缓存、指令重排序、JMM))
多线程常见面试题
最新推荐文章于 2024-09-14 17:49:26 发布