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();
}
}
{
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();
}
}
StringRunnable StringThread java.lang.NullPointerException at StringThread.run(StringThread.java:35)
只是StringRunnable里的静态域str没有初始化,抛出异常
:Exception in thread "Thread-1" java.lang.NullPointerException
at StringThread.run(stringthread.java:35)
初始化就行了
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();
}