java两个线程轮流输出奇数和偶数到100

刚刚被面试完阿里实习的笔试题目。遇到的是一到多线程题目。

题目:创建两个线程,一个线程输出1,3,5,7.另一个线程输出2,4,6,8.输出到100为止

我考后才想出来的一个写法:

public class Main2
{
	public static void main(String[] arg)
	{
		MyThread a = new MyThread(), b = new MyThread();
		Lock lock=new Lock();
		a.lock=lock;
		b.lock=lock;
		a.start();
		b.start();
	}
}

class Lock
{
	int lock=1;
	int id=0;
	int current=0;
}
class MyThread extends Thread
{
	Lock lock;
	public void run()
	{
		while (true)
		{
			synchronized (lock)
			{
				if(lock.lock>100)
					break;
				lock.current=(int) this.getId();
				if(lock.id==lock.current)//不是这个锁
					continue;
				System.out.println(this.getId() + " " + lock.lock++);
				lock.id=lock.current;
			}
		}
	}
}

第一次面试。紧张的要死。死也想不出。考官提醒了一个用notify和wait的方法。可惜我没用过。现在我花了1小时梳理了下情绪才用我学过的知识打了出来。额。可能不是最优的方法。但是肯定比睡眠100毫秒来的高效。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章