简单线程等待问题 线程t1有一个控制线程t2的静态布尔变量s。t2是一个while循环通过判断s的值来决定是否终止。现在t1希望等待t2终止后才终止,这个程序该怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 t1线程中也可以做个while循环,判断t2是否已经终止。如果t2终止了,t1也终止。t2是否已经终止如果判断不了,可以再加一个静态布尔变量,t2结束时才设置为true,t1通过这个变量判断是否终止。 一般不会这么用,用线程联合t1.join(t2)来实现这类线程同步问题 答:很简单。t1线程中最后一句代码是:t2.join()就行了。 import java.util.concurrent.atomic.AtomicBoolean;public class DriverTest { /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { final AtomicBoolean run1 = new AtomicBoolean(true); new Thread(){ Boolean run = true; public void run() { while(run){ System.out.println("Thread 2 is still running"); run = run1.get(); } } }.start(); Thread.sleep(3000); while(!run1.compareAndSet(true, false)){ run1.compareAndSet(true, false); } }} 关于垃圾回收,,如何理解。。请各位大大指教 如何高效率学习Java SE 关于java的正则表达式问题 Eclipse Java Project数据库程序问题 java 基础类的 为什么是0? 为什么我的命令控制台不能运行.class文件?是环境变量问题吗? 监测按键问题 如何捕捉自定义的异常? 请问用JAVA写CORBA有前途。现在用的多吗? java中如何完成倒计时 java 类中的一点小问题
t2是否已经终止如果判断不了,可以再加一个静态布尔变量,t2结束时才设置为true,t1通过这个变量判断是否终止。
public class DriverTest {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
final AtomicBoolean run1 = new AtomicBoolean(true);
new Thread(){
Boolean run = true;
public void run() {
while(run){
System.out.println("Thread 2 is still running");
run = run1.get();
}
}
}.start();
Thread.sleep(3000);
while(!run1.compareAndSet(true, false)){
run1.compareAndSet(true, false);
} }}