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

java多线程: 子线程循环10次,主线程接着循环100次,如此循环50次

2017-04-01 00:21 507 查看
package com.view04.alternate.print;

/**

* 子线程循环10次,主线程接着循环100次,如此循环50次的问题

* @author zhaojw_420

*

*/
public class AlternateThread {

public static void main(String[] args) {
final Bussies bussies=new Bussies();
MainThread mainThread=new MainThread(bussies);
SubThread subThread=new SubThread(bussies);
Thread main=new Thread(mainThread,"主线程");
Thread sub=new Thread(subThread,"子线程");
main.start();
sub.start();
}
}

class Bussies{
private boolean flage=true; //flage为true时打印主线程,为false时打印子线程

public void main(){

synchronized(this){
while (!flage) {
try {
this.wait(); //为false时等待

} catch (InterruptedException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}
}
for (int i = 0; i < 100; i++) {     System.out.println(Thread.currentThread().getName()+"执行了第"+(i+1)+"次");
}
flage=false;
this.notifyAll();
}
}

public void sub(){
synchronized(this){
while (flage) {
try {
this.wait();//如果为true则等待

} catch (InterruptedException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}
}
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"执行了第"+(i+1)+"次");
}
flage=true;
this.notifyAll();
}
}
}

//主线程

class MainThread implements Runnable{

private Bussies bussies;
public MainThread(Bussies bussies) {
this.bussies = bussies;
}
public Bussies getBussies() {
return bussies;
}
public void setBussies(Bussies bussies) {
this.bussies = bussies;
}
@Override
public void run() {
for(int i=0;i<50;i++){
bussies.main();
}
}

}
//子线程

class SubThread implements Runnable{

private Bussies bussies;

public SubThread(Bussies bussies) {
this.bussies = bussies;
}
public Bussies getBussies() {
return bussies;
}
public void setBussies(Bussies bussies) {
this.bussies = bussies;
}

@Override
public void run() {
for(int i=0;i<50;i++){
bussies.sub();
}

}

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