Java 在线程上多次调用start()时会发生什么情况
如果我在线程A上调用Java 在线程上多次调用start()时会发生什么情况,java,multithreading,Java,Multithreading,如果我在线程A上调用start(),使其运行,然后在线程A仍在运行时再次调用start(),会发生什么 例如: myThread.start(); // myThread is running... myThread.start(); 将引发异常。启动后,无法将线程恢复到“等待启动”状态,因此无论线程在第一次启动后处于何种状态,第二次启动都将处于错误状态。您可以自己尝试看看。尝试一次后发生了什么?在Javadoc中查找时发现了什么?零研究-1.如果我想重新启动线程,怎么办?我在线程上
start()
,使其运行,然后在线程A仍在运行时再次调用start()
,会发生什么
例如:
myThread.start();
// myThread is running...
myThread.start();
将引发异常。启动后,无法将线程恢复到“等待启动”状态,因此无论线程在第一次启动后处于何种状态,第二次启动都将处于错误状态。您可以自己尝试看看。尝试一次后发生了什么?在Javadoc中查找时发现了什么?零研究-1.如果我想重新启动线程,怎么办?我在线程上调用中断,并在线程运行方法上检查它以退出,然后调用start?如果线程没有终止?@dariofrongi:这是个坏主意。对线程进行编码,使其在第一时间完成您想做的事情,这样您就不必去搞乱它。如果你中断它,它持有线程恢复所需的锁,你就会死锁。我必须实现一个线程,在他的构造函数中使用蓝牙设备,并在run方法中尝试连接到这个设备,但是如果在Bleutoth线程运行的主线程中,用户再次单击connect并选择另一个蓝牙设备,我想停止蓝牙线程并使用新设备再次运行它,hoow可以吗?@dariofrongi:让该线程单独运行并创建一个新线程。是的,但要终止该线程,请调用中断并在运行方法时检查它?