import java.io.*;class StringRunnable implements Runnable
{
  public static String str;
  public StringRunnable()
  {
    System.out.println("StringRunnable");
  }  public void run()
  {
try
{
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      str = in.readLine();
      System.out.println(str);
    }
    catch (IOException e)
    {
  System.out.println(e.getMessage());
}
  }
}public class StringThread extends Thread
{
  public StringThread()
  {
    System.out.println("StringThread");
  }  public void run()
  {
    System.out.println("The length of string is: " + StringRunnable.str.length());
  }  public static void main(String[] args)
  {
    Thread thread1 = new Thread(new StringRunnable());
    thread1.setPriority(Thread.MAX_PRIORITY);
    thread1.start();
    Thread thread2 = new StringThread();
    thread2.start();
  }
}

解决方案 »

  1.   

    把你的代码拿去运行下,可以啊。你的代码具体内容没看。下面是运行结果:
    StringRunnable                                   StringThread                                     java.lang.NullPointerException                           at StringThread.run(StringThread.java:35)
      

  2.   

    的确能运行
    只是StringRunnable里的静态域str没有初始化,抛出异常
    :Exception in thread "Thread-1" java.lang.NullPointerException
            at StringThread.run(stringthread.java:35)
    初始化就行了
      

  3.   

    thread1.setPriority(Thread.MAX_PRIORITY); 
    thread1优先级高,并不代表thread1不执行完thread2就不会被执行
    当thread1走到这里
    BufferedReader   in   =   new   BufferedReader(new   InputStreamReader(System.in)); 
                str   =   in.readLine(); 
    等到用户输入的时候,如果用户没有及时输入或者没有输入完成,thread1就会堵塞在这里这时候,如果thread2开始了,运行到
            System.out.println("The   length   of   string   is:   "   +   StringRunnable.str.length()); 由于StringRunnable.str还是null,调用length()就会造成thread2异常终止如果LZ想让线程顺序执行,可以不用设优先级,直接用join就可以了public   static   void   main(String[]   args) 
        { 
            Thread   thread1   =   new   Thread(new   StringRunnable()); 
            //thread1.setPriority(Thread.MAX_PRIORITY); 
            //thread1.start(); 
            Thread   thread2   =   new   StringThread(); 
            //thread2.start(); 
            thread1.start();
            thread1.jion();
            thread2.start();
        }