您的位置:首页 > 编程语言 > Java开发

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

2018-03-13 21:45 330 查看
刚刚被面试完阿里实习的笔试题目。遇到的是一到多线程题目。
题目:创建两个线程,一个线程输出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毫秒来的高效。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐