向Java线程传递参数

向Java线程传递参数,java,android,multithreading,parameters,Java,Android,Multithreading,Parameters,我做了一个android应用程序,我想从菜单中更改运行线程的一些参数。 我的班级是这样的: public class MyClass { public class MyThread extends Thread { public volatile long sleepTime =200; ..... public synchronized void set_sleepTime(long value)

我做了一个android应用程序,我想从菜单中更改运行线程的一些参数。 我的班级是这样的:

public class MyClass {

        public class MyThread extends Thread {
             public volatile long sleepTime =200;
             .....
             public synchronized void set_sleepTime(long value)
                          /* with or without synchronized is te same problem*/

        {
            sleepTime=value;
        }
             .....
             }
}
我在应用程序的onCreateMethod中创建了这个类

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        MyClass nClass=new MyClass(this);

        setContentView(nClass);

    }
我尝试更改菜单中的参数。像这样:

public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case R.id.load_game:
            ... 


                try{

                    mSheepThread.set_sleepTime(10);

                }
                catch (Exception e0)
                {
                    toast = Toast.makeText(getApplicationContext(), "Could not set parameters", Toast.LENGTH_LONG);
                }
                       ...              

        }
    }
每次e0=NullPointer异常时我都会收到。
我不明白为什么。

您没有显示足够的代码。特别是,您还没有显示mSheepThread的声明或赋值位置。我打赌mSleepThread从未初始化过。这是一个不精确的问题。请至少说明什么是空引用了解Java命名约定,这应该通过查看javadoc来了解,并坚持这些约定。设置睡眠时间->设置睡眠时间。Jon Skeet和jbx,你是对的,我没有初始化mThreadSheep。我现在把变量放在公共类MyClass{public static volatile long sleepTime=200;