`
imoreless
  • 浏览: 4990 次
社区版块
存档分类
最新评论

java多线程面试题

阅读更多

前天去一家做数据挖掘的公司面试,有一题是关于java多线程的,现贴出来和网友分享。
题目:启动两个线程,第一个线程输出1,第二个线程输出a,接着第一个线程输出11,第二个线程输出aa,以此类推。
既输出为 1 a 11 aa 111 aaa 1111 aaaa .....。

代码是我自己写的,如有不妥的地方,欢迎指正。

package thread.writtentest;

public class ThreadTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		final Share share = new Share();

		new Thread(new Runnable() {

			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					share.print1();
				}
			}

		}).start();

		new Thread(new Runnable() {

			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					share.printA();
				}
			}

		}).start();
	}

}

class Share {

	//输出1或a的个数
	static int length = 1;
	String a = "a";
	int i = 1;
	
	//isExc=true时,第一个线程执行RUNNABLE状态,第二个线处于WAITING状态。
	//isExc=false时,第二个线程执行RUNNABLE状态, 第一个线程处于WAITING状态。
	boolean isExc = true;

	public synchronized void print1() {
		while (!isExc) {
			try {
				wait();
			} catch (InterruptedException e) {
				System.out.println(e);
			}
		}

		for (int index = 0; index < length; index++) {
			System.out.print(i);
		}
		
		System.out.println();
		isExc = false;
		notifyAll();

	}

	public synchronized void printA() {
		while (isExc) {
			try {
				wait();
			} catch (InterruptedException e) {
				System.out.println(e);
			}
		}

		for (int index = 0; index < length; index++) {
			System.out.print(a);
		}

		length++;
		System.out.println();
		isExc = true;
		notifyAll();
	}
}
 

 

分享到:
评论

相关推荐

    java多线程面试题和答案

    以下是一些关于Java多线程的面试题及其答案,涵盖了基础概念、并发控制、线程安全以及性能优化等方面。 1. **什么是Java多线程?** 多线程是指在单个程序中同时执行多个线程,这样可以提高应用程序的效率和响应...

    史上最全 Java 多线程面试题及答案

    了解这些核心概念后,开发者可以更好地应对Java多线程面试中可能出现的问题,同时也能在实际项目中灵活运用多线程技术,提升程序性能。多线程编程虽然复杂,但掌握好相关的工具和原理,就能有效地解决并发问题,编写...

    Java多线程面试题

    Java多线程面试题是Java程序员面试中常见的部分,尤其在金融行业的电子交易系统开发中,对并发处理能力的要求非常高。以下是对这些面试题的详细解答: 1) 保证线程顺序执行:可以通过调用`Thread.join()`方法实现。...

    java多线程面试题59题集合

    以下是对Java多线程面试题59题集合中可能涉及的一些关键知识点的详细解析。 1. **线程的创建方式** - 继承Thread类:创建一个新的类,该类继承自Thread类,并重写其run()方法。 - 实现Runnable接口:创建一个实现...

    多线程面试题

    本文将围绕“多线程面试题”这一主题,深入探讨相关概念、技术及其应用。 1. **线程的概念**:线程是程序执行的最小单位,一个进程可以有多个线程同时执行任务,提高了程序的运行效率。 2. **Java中的线程创建方式...

    15个顶级Java多线程面试题答案

    ### 15个顶级Java多线程面试题答案解析 #### 1. 如何保证线程执行顺序(T1→T2→T3) 在Java多线程编程中,有时我们需要控制线程的执行顺序。例如,有T1、T2、T3三个线程,我们希望T2在T1执行完毕后再执行,T3则需...

    15个顶级Java多线程面试题及回答

    ### 15个顶级Java多线程面试题及回答解析 #### 1. 线程执行顺序控制 - **题目**: 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? - **解析**: 这个问题考察了面试者对于`join()`...

    Java 多线程面试题及答案.pdf

    以下是对Java多线程面试题及答案的详细解释: 1. **多线程的作用** - **发挥多核CPU的优势**:多线程能让程序在多核CPU上并行执行,充分利用硬件资源,提高程序运行效率。单核CPU虽然可以通过快速线程切换模拟并发...

    Java 多线程面试题.one

    Java 多线程面试题.one

    15个顶级JAVA多线程面试题及回答[文].pdf

    由于【部分内容】中提供的信息非常杂乱,缺乏连贯性和上下文,因此下面的知识点将基于Java多线程及并发编程的通用知识点进行构建,以确保满足15个顶级JAVA多线程面试题及回答的知识要求。 首先,在Java多线程面试中...

    40道常问的Java多线程面试题!.zip

    Java多线程是Java编程中的核心概念...以上仅是40道Java多线程面试题中的一部分,每道题目背后都涉及到Java多线程编程的深度理解。熟练掌握这些知识点,不仅能在面试中表现出色,还能提高编写高效、稳定并发代码的能力。

    史上最全 Java 多线程面试题及答案.zip

    这份“史上最全 Java 多线程面试题及答案”文档,无疑是你准备面试或深入理解Java并发编程的绝佳资源。以下是根据标题和描述中涉及的Java多线程知识点的详细说明: 1. **线程与进程**:线程是程序执行的最小单位,...

    15道面试常问的Java多线程面试题!.pdf

    以下是对给定文件中提到的Java多线程面试题的详细解答: 1. **线程执行顺序控制**:使用`Thread.join()`方法可以确保一个线程在另一个线程执行完毕后再开始执行。例如,`T1.join()`会让`T2`等待`T1`完成后才开始,...

    15个顶级Java多线程面试题及答案.pdf

    15个顶级Java多线程面试题及答案.pdf

    15道面试常问的Java多线程面试题!.zip

    以下是一些在面试中经常被问到的Java多线程面试题及其详解: 1. **什么是线程?** 线程是操作系统分配CPU执行时间的基本单位,它是程序执行的最小单元,一个进程可以包含多个线程。 2. **Java中如何创建线程?** ...

Global site tag (gtag.js) - Google Analytics