package com.js;
import java.awt.*;
import javax.swing.*;
public class Java_4_Thread_Join extends JFrame {
private Thread threadA;// 定义两个线程
private Thread threadB;
final JProgressBar progressBar = new JProgressBar();// 定义两个进度条组件
final JProgressBar progressBar2 = new JProgressBar();
int count = 0;
public static void main(String[] args) {
// TODO 自动生成的方法存根
init(new Java_4_Thread_Join(),400,100);
}
public Java_4_Thread_Join(){
super();
// 将进度条设置在窗体最北面
getContentPane().add(progressBar, BorderLayout.NORTH);
// 将进度条设置到窗体的最南面
getContentPane().add(progressBar2, BorderLayout.SOUTH);
progressBar.setStringPainted(true);//设置进度条显示数字字符
progressBar2.setStringPainted(true);
// 使用匿名内部类形式初始化 Thread 实例
threadA = new Thread(new Runnable(){
int count = 0;
public void run(){// 重写 run() 方法
while(true){
progressBar.setValue(++count); // 设置进度条的值
try{
Thread.sleep(100);// 使线程A 休眠 100毫秒
threadB.join();// 使线程B 调用 join() 方法
}catch(Exception e){
e.printStackTrace();
}
}
}
});
threadA.start();// 启动线程A
threadB = new Thread(new Runnable(){
int count = 0;
public void run(){
while(true){
progressBar2.setValue(++count);// 设置进度条当前的值
try{
Thread.sleep(100);// 使用线程B休眠100毫秒
}catch(Exception e){
e.printStackTrace();
}
if(count == 100){// 当count 变量增长为100时候
break;// 跳出循环
}
}
}
});
threadB.start();// 启动线程B
}
public static void init(JFrame frame,int width,int height){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width, height);
frame.setVisible(true);
}
}