Q:说说Java的线程都有哪些状态?
Java线程刚被新建(NEW)
Java线程可能被调度(Runnable)
Java线程终止(Terminated)
Java线程因获取不到资源,如磁盘IO被阻塞(BLOCKED)
Java线程被放入waitSet或者Park(Waiting)
Java线程执行了sleep主动让出CPU(TimeWaiting)
Q:说说Java有协程吗?
Java原生没有协程,但是似乎有一些第三方库,而类似Kotlin这样的JVM语言是有协程的。
Q:自旋锁是不是CAS LOOP ?反之呢?
我认为是的,CAS来不断尝试争抢,线程处于运行状态占据CPU的资源
反之,CASLoop可以做很多其他操作,不一定是“锁”的含义,如CLH队列中将一个节点并发的添加到LinkedList中,就是一个CASLoop,CASLoop可以干的事情很多,自旋锁只是其中的一个特例。
Q: 什么场景下用CyclicBarrier?
需要协调多个线程完成“步调一致”工作的,多个线程一起执行,到全部执行完成,再一起执行。具体没有使用过,这里编一个场景,假设写一个测试工具,定期从相同服务的不同机器上发出请求,统计相应时间,最后生成“报表”,再去触发,再去生成。。。