场景一
在我们面试中经常会有这么一个场景,就是我们用线程A输出“A”字符,有线程B输出“B”字符,交替进行,要求A线程执行完任务输出:“A线程打印完了”,B线程执行完任务输入:“B线程打印完了”,最后有主线程输出一句话“我打印完了”!
当你看到这个场景时,有点多线程经验的人肯定会感觉很容易,然后有可能进行下面的实现,上代码:
//A线程类
public class ThreadA extendsThread {privateTestThread testThread;publicThreadA(TestThread testThread){this.testThread=testThread;
}
@Overridepublic voidrun(){for(int i=0;i<5;i++){
testThread.printStr("A");
}
System.out.println("a线程打印完了");
}
}//B线程类
public class ThreadB extendsThread {privateTestThread testThread;publicThreadB(TestThread testThread){this.testThread=testThread;
}
@Overridepublic voidrun(){for(int i=0;i<5;i++){
testThread.printStr("B");
}
System.out.println("b线程打印完了");
}
}//测试类
public classTestThread {public static voidmain(String[] args){
TestThread testThread=newTestThread();
ThreadA threadA= newThreadA(testThread);
ThreadB threadB= newThreadB(testThread);
threadA.setName("threadA");
threadB.setName("threadB");
threadB.setPriority(2)//这个目的是将B线程的优先级降低,让A线程先执行,使得在打印的时候先打印“A”,但是我要说但是ÿ