java-thread-3

/**
 * 线程的加入
 * 1.解释:就是在一个线程A里面的run()方法调用另一个线程B;理论上两个线程是互相独立的
 * 这个时候我使用B.join();这个时候,A线程会停下来,然后让B线程优先运行,后来A在调用
 * 2.语法:
 * run(){
 * 		线程对象.join();//让原线程停下来
 * 		线程对象.join(“X毫秒”);//让原线程停下来X毫秒,超过X秒,原线程和线程对象抢占资源
 *		} 
 * @author 小虎牙
 *
 */
public class Thread_3 {
	
public static void main(String[] args) {
		Thread dThread=new Thread(new ThreadD());
		dThread.start();
		Thread eThread=new Thread(new ThreadE(dThread));
		eThread.start();
		
}
}
class ThreadE implements Runnable {
	Thread dThread;
	public ThreadE(Thread dThread) {
		// TODO 自动生成的构造函数存根
		this.dThread=dThread;
	}

	@Override
	public void run() {
		// TODO 自动生成的方法存根
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			System.out.println("线程E:" + i);
			if(i==3) {
				try {
					System.out.println("开始礼让!");
					dThread.join();
					System.out.println("上个线程结束!");
				} catch (InterruptedException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
				
			}
	
		}
	}
}
class ThreadD extends Thread {
	@Override
	public void run() {
		// TODO 自动生成的方法存根
		super.run();
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			System.out.println("线程A:" + i);
		
		}
	}
}

Supongo que te gusta

Origin blog.csdn.net/huiguo_/article/details/108817184
Recomendado
Clasificación