Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何控制同一对象的多个线程?_Java_Android - Fatal编程技术网

Java 如何控制同一对象的多个线程?

Java 如何控制同一对象的多个线程?,java,android,Java,Android,下面是我在安卓系统中的点击按钮 protected onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) public void onClick(View arg0) { if(connectThread!=null) {

下面是我在安卓系统中的点击按钮

protected onCreate(Bundle savedInstanceState)
  {
     super.onCreate(savedInstanceState)
          public void onClick(View arg0)
                   {
                       if(connectThread!=null)
                            {
                               connectThread.kill();
                            }
                        connectThread=new ConnectThread(device);
                        connectThread.start();
                   }
}
我在
ConnectThread
类中运行了一个
boolean
volatile变量,该变量默认为true,kill方法将其值设置为false。 问题是它仍然不工作,原因可能是在我的
ConnectThread
run方法中,我正在创建另一个线程,但这不应该是问题,因为它是从run方法调用的,并且它将是
ConnectThread
的子线程;在终止将自动取消的连接线程时

ConnectThread的kill方法

   public void kill()
               {
                 running=false;
               }
 public void run()
         {
              while(running)
                       {
                       }
         }
运行
ConnectThread的方法

   public void kill()
               {
                 running=false;
               }
 public void run()
         {
              while(running)
                       {
                       }
         }

如果应用程序在您的设备上仍处于活动状态,并且您启动了第二个连接线程,则蓝牙设备可能不可用


我建议您仔细阅读。

是否有一种方法,在单击第二个按钮时,上一个线程被拆除,新线程开始通信当我通过返回或转发暂停应用程序时,生命周期开始发挥作用,或者出现一个对话框,但问题是我仍然在当前活动中,并单击多个按钮发送相同数据的时间。我自己在连接的事件中找到了它,我调用kill方法停止它,单击method,我必须通过在线程中创建另一个将running设置为true的方法将其设置为true。