2019独角兽企业重金招聘Python工程师标准>>>
package com.thread;/*** 创建两个线程,一个线程循环10次,另一个线程100次,两者交替运行50次* 即到A线程时,它运行本身循环的10次之后;马上轮到B线程,它则运行本身的100次循环* 以此轮换切换线程共50次*/
public class ThreadTest {public static void main(String[] args) {final Business business=new Business();//子线程new Thread(new Runnable() {public void run() {for (int i = 0; i < 50; i++) {try {business.sub(i);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}).start();//----------------------------线程二-------------------------------------------------//main方法本身是个线程,即线程二运行代码直接放到main方法中for (int i = 0; i < 50; i++) {try {business.main(i);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}class Business{private boolean isSub=true;//当前运行的方法是sub()//线程一public synchronized void sub(int i) throws InterruptedException {while (!isSub) {this.wait();}for (int j = 0; j < 10; j++) {System.out.println("sub thread sequence is "+j+" and loop is "+i);}isSub = false;this.notify();}//主线程,即mainpublic synchronized void main(int i) throws InterruptedException{while (isSub) {this.wait();}for (int j = 0; j < 100; j++) {System.out.println("main thread sequence is "+j+" and loop is "+i);}isSub = true;this.notify();}
}