一道多线程面试题
面试官问:
10个线程同时读是不会互斥的。
如果让其中一个线程写,其他线程读。怎么写。
就是说其中一个线程拿到写锁,其余剩下的线程只能读,不能写。
public class ThreadWriter {
static CyclicBarrier cyclicBarrier = new CyclicBarrier(10);
private static ReadWriteLock lock = new ReentrantReadWriteLock();
private static int number = 0;
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new Thread() {
@Override
public void run() {
try {
System.err.println("线程" + Thread.currentThread().getName() + "到达!!!");
cyclicBarrier.await();
if (lock.writeLock().tryLock()) {
try {
Thread.sleep(10);
number++;
System.out.println(Thread.currentThread().getName() + "-------正在写-------");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.writeLock().unlock();
}
} else {
lock.readLock().lock();
System.out.println(Thread.currentThread().getName() + "-------正在读-------");
lock.readLock().unlock();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
}

请问 这样模拟是对的吗。
...全文
相关推荐
阿里的一道Java并发面试题详解
主要介绍了阿里的一道Java并发面试题详解,网络、并发相关的知识,相对其他一些编程知识点更难一些,主要是不好调试并且涉及内容太多 !,需要的朋友可以参考下
答复: 一道经典线程面试题的4种解法
NULL 博文链接:https://houfeng0923.iteye.com/blog/1251682
JAVA30道面试题.zip
30道常见的Java面试题,涵盖了基础语法、面向对象、集合框架、异常处理、多线程、IO流等内容。每个问题都附有代码示例和注释说明,力求通俗易懂。
DevBooks-Java面试题
DevBooks-Java面试题
Linux 多线程介绍
本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥


Java SE
