您的位置:首页 > 其它

启动3个线程,线程1打印1到5,线程2打印5到10,线程3打印11到15,然后线程1打印16到20,以此类推。。。打印到30为止

2017-04-15 17:59 453 查看
//启动3个线程,线程1打印1到5,线程2打印5到10,线程3打印11到15,然后线程1打印16到20,以此类推。。。打印到30为止
public class MainThread {
private static  int num;//当前记录数
private static final  int threadNum =3;//开启任务线程数
private static final  int loopNum = 2;//threadNum个线程循环的次数
private static final  int singleThreadLoopNum = 5;//单个线程运行任务数
static {
num = 0;
}
public synchronized void CallbackMethod(String threadName){
for (int i = 1; i <= singleThreadLoopNum; i++) {
System.out.println(threadName+":"+(++num));
}
}

public void PrintNum() throws InterruptedException{
for (int i = 1; i <=loopNum; i++) {
for (int j = 1; j <= threadNum; j++) {
Worker runnable = new Worker(this);//this 把当前记录数num传递给下一个线程
Thread thread = new Thread(runnable);
thread.setName("线程"+j);
thread.start();
thread.join();
}
}
}
public static void main(String[] args) throws InterruptedException{
MainThread pc = new MainThread();
pc.PrintNum();
}
}
class Worker implements Runnable{
private MainThread printCallback;
public Worker(MainThread printCallback) {
this.printCallback = printCallback;
}
public void run() {
printCallback.CallbackMethod(Thread.currentThread().getName());
}
}



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