import java.util.*;public class Fun1Demo{
public static void main(String[] agrs){
Scanner scanner = new Scanner(System.in);
Thread a = new Thread(new Aa()); 
System.out.println("请输入密码:");
a.start();
//*1
String code = scanner.next(); Fun1.ak = false;
}
}

class Fun1 implements Runnable{
public static boolean ak = true;
public void run(){
while(ak){
System.out.print("\010" + "#");
try{
//*2
Thread.currentThread().sleep(50);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
/*程序运行到1的时候mian线程等待输入 进入锁定状态! 后线程A执行!
 *a线程执行到2的时候线程调用sleep(50);进入锁定状态!
 *a线程50豪秒秒后,就苏醒 进入Runnable 状态可以被调度了
 *main线程继续进行!
 *如果我一直不输入!(那么mian()是不是一直被锁定!) 
 *50豪秒后,a苏醒而main还在锁定状态 为什么不调度a线程继续执行
 *结果大家运行下程序都知道-> 只要我不输出!程序就一直停在那里
 *a 和  main 都不执行! 就是这里我想不通是什么原因 哪位大虾能
 *帮我解释下其中的原理么 !回答的好的话 我会到+ 分的!
 */

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yangyongjie81】截止到2008-07-05 17:35:20的历史汇总数据(不包括此帖):
    发帖的总数量:10                       发帖的总分数:240                      
    结贴的总数量:9                        结贴的总分数:190                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:50                       
    结贴的百分比:90.00 %               结分的百分比:79.17 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    值得尊敬
      

  2.   

    线程类a要想成为可运行的类,必须在其构造方法里面传递一个实现了Runnable接口的类作为参数。你这里并没有定义Aa这个类。即使你要使用匿名内部类也要符合这一条。
      

  3.   

    见你另一贴 http://topic.csdn.net/u/20080705/19/94662b63-4c8b-42b1-9fa0-0118aadef192.html
      

  4.   

      scanner.next();是一个阻塞的方法吧!~~