线程面试题

原创 2013年12月04日 10:21:05

子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环50次,写出程序?

 

使用Object.wait()和Object.notify()方法实现等待和唤醒功能,实现多线程之间共享数据

package hb.threadcomunicate;

public class SynThread {

	boolean isSub = true;
	
	public synchronized void sub(int loop) {
		while(!isSub){
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		for (int i = 0; i < 10; i++) {
			System.out.println("sub thread : " + i + ";loop " + loop);
		}
		isSub = false;
		this.notify();
	}

	public synchronized void main(int loop) {
		while(isSub){
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		for (int i = 0; i < 10; i++) {
			System.out.println("main thread : " + i + ";loop " + loop);
		}
		isSub = true;
		this.notify();
	}

}

 

package hb.threadcomunicate;

public class ThreadCommunicate {

	public static void main(String[] args) {

		final SynThread synThread = new SynThread();

		new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < 50; i++) {
					synThread.sub(i);
				}
			}
		}).start();

		new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < 50; i++) {
					synThread.main(i);
				}
			}
		}).start();

	}

}

 

 

相关文章推荐

每日5道面试题七(java线程)

什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。 比如,如果一个线程完成...

线程高级应用-心得2-同步锁讲解及面试题案例分析

1.引入同步锁 2.同步锁案例分析 package com.itcast.family; public class TraditionalThreadSynchronized { ...

JAVA面试题之线程

线程:   1、多线程有几种实现方法?同步有几种实现方法? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wa...

应届生经典面试题:说说进程与线程的区别与联系

这问题,估计计算机专业的同学在找研发等工作的时候都会遇到过。前几天某老牌软件厂商的电话面试就提到了这一经典问题,今天招聘会上又有不少同学说在面试的时候被问到这点。在这里我就起个头,大家有啥想法意见等都...

Java线程面试题 Top 50 (转载)

本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。   不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java...
  • uhgagnu
  • uhgagnu
  • 2017年03月02日 12:25
  • 399

面试题_1.线程2.实例化内部类对象

面试题1:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadI...

一道面试题:多个线程按顺序输出

题目:编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC……      ...

从面试题看问题之线程篇(一)

呆萌小土豆 2017-05-15 12:13 【面试题1】Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? sleep()方法(休眠)是线程类(T...

java工程师最新面试题(线程部分)

一般来说,把正在计算机中执行的程序叫做“进程”,所谓的“线程”是指“进程”中某个单一顺序的控制流。 要求读者掌握 1掌握java多线程机制 2.直到进程和线程的区别 3.掌握进程的几种状态 ...

Java线程面试题 Top 50

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程面试题
举报原因:
原因补充:

(最多只允许输入30个字)