面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
不解释直接上代码:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class ReenTantlockTest { static Lock locks = new ReentrantLock(); static Condition conditonMain = locks.newCondition(); static Condition conditonSun = locks.newCondition(); public static void main(String[] args) { final ExecutorService executorService = Executors.newFixedThreadPool(100); for(int bb = 0; bb < 10 ; bb++){ executorService.execute(new Runnable() { @Override public void run() { try { locks.lock(); for(int i=0 ; i<10 ; i++){ String name = Thread.currentThread().getName(); System.err.println("子线程循环:"+name+"-----"+i); } conditonMain.signal(); conditonSun.await(); } catch (Exception e) { e.printStackTrace(); }finally{ locks.unlock(); } } }); try { locks.lock(); conditonSun.signal(); conditonMain.await(); for(int i = 0 ; i< 100 ; i++){ String name = Thread.currentThread().getName(); System.err.println("主线程循环:"+name+"-----"+i); } } catch (Exception e) { e.printStackTrace(); }finally{ locks.unlock(); } } } }
注:locks-->定义显示锁,比synchronized内置锁更灵活
condition-->定义锁(显示锁)的条件队列,当在线程中调用其await()方法时就会将其存放到锁的条件队列中,比内置锁的强点是可以对一个锁定义多个条件队列。signal()方法唤醒队列中进程(虚假环境),FIFO顺序唤醒。
相关推荐
Java 线程面试题 Top 50 Java 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。 一、什么是...
Java线程面试题是Java开发者在面试中常常遇到的核心领域,因为并发处理是现代软件开发中的关键部分。Java语言的并发支持使得它在企业级应用中广泛应用。掌握线程和并发编程不仅能提升程序性能,也是高级Java开发职位...
以下是一些经典的多线程面试题知识点: 1. Java中的线程状态有哪些? - 新建状态(New):线程对象创建后,但尚未启动。 - 就绪状态(Runnable):处于就绪状态的线程随时可能被CPU调度执行。 - 运行状态...
2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...
本文将围绕“多线程面试题”这一主题,深入探讨相关概念、技术及其应用。 1. **线程的概念**:线程是程序执行的最小单位,一个进程可以有多个线程同时执行任务,提高了程序的运行效率。 2. **Java中的线程创建方式...
Java线程是并发编程的核心部分,它允许程序在同一时间执行多个任务,从而提高了系统的效率和响应性。在Java中,线程是操作系统调度的基本单元,它们在进程内部运行,共享同一内存空间,但每个线程都有自己独立的栈...
多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 Spring面试题 Spring Boot面试题 Spring Cloud面试题 RabbitMQ面试题 Dubbo 面试题 MyBatis 面试题 ZooKeeper 面试题 数据结构...
理解并熟练掌握这些Java线程知识对于解决并发编程中的问题至关重要,也是Java开发者面试时常常被考察的技能。深入学习包括《Java并发编程实战》在内的专业书籍将有助于进一步提升这方面的专业能力。
了解这些核心概念后,开发者可以更好地应对Java多线程面试中可能出现的问题,同时也能在实际项目中灵活运用多线程技术,提升程序性能。多线程编程虽然复杂,但掌握好相关的工具和原理,就能有效地解决并发问题,编写...
以下是一些关于Java多线程的面试题及其答案,涵盖了基础概念、并发控制、线程安全以及性能优化等方面。 1. **什么是Java多线程?** 多线程是指在单个程序中同时执行多个线程,这样可以提高应用程序的效率和响应...
### Java线程面试题知识点详解 #### 一、线程基本概念 1. **什么是线程?** - 线程是操作系统中能够独立运行的最小单位,它被包含在一个进程中,是进程中的实际执行单元。通过多线程编程可以有效利用多核处理器...
Java面试题、JVM面试题、多线程面试题、并发编程、设计模式面试题、SpringBoot面试题、SpringCloud面试题、MyBatis面试题、Mysql面试题、VUE面试题、算法面试题、运维面试题。 收集汇总各行业笔试or编程题解题思路 ...
java企业面试题大全(包括18个文档)。1、15个经典面试题.pdf。2、120个Java经典面试题和答案(上).pdf。3、120个Java经典面试题和答案(下).pdf。4、EJB方面.pdf。5、java web面试题.pdf。6、Java基础方面.pdf。7...
"Java 面试题及其答案.doc"和"JAVA面试题.doc"提供了大量的面试题及解答,涵盖了从基础知识到高级特性的广泛范围,包括反射、注解、设计模式、Spring框架、数据库操作等。通过这些题目,求职者可以自我评估,了解...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
java后端面试题答案 Java基础面试题 Kafka面试专题及答案 Linux面试专题及答案 多线程面试专题及答案 消息中间件面试专题及答案 ActiveMQ消息中间件面试专题 Dubbo面试及答案 java后端面试题答案 Java基础面试题 ...
2023年最新版--Java+最常见的+200++面试题汇总+答案总结汇总 阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 ...
标题提到的是"Java面试题、JVM面试题、多线程面试题",而描述和标签却提及"python编程"。不过,既然您希望聚焦于"Java面试题、JVM面试题、多线程面试题",我将为您详细介绍这些主题。 **Java面试题** 1. **Java是...