會拋出IllegalThreadStateException()
示例代碼如下:
public class Main{ public static void main(String[] args){ Thread t1 = new Thread(()->{System.out.println("this is a thread");}); t1.start(); t1.start() } }
之所以會拋出異常,是因為在start()函數里,一開始會檢查線程狀態,如果線程狀態不為0,會拋出該異常。線程的狀態初始值為0,當第一次進入start()方法后,會修改線程狀態,使其不為0,第二次進入start()函數,那么肯定就拋出異常了
public synchronized void start() { /** * This method is not invoked for the main method thread or "system" * group threads created/set up by the VM. Any new functionality added * to this method in the future may have to also be added to the VM. * * A zero status value corresponds to state "NEW". */ if (threadStatus != 0) throw new IllegalThreadStateException(); /* Notify the group that this thread is about to be started * so that it can be added to the group's list of threads * and the group's unstarted count can be decremented. */ group.add(this); boolean started = false; try { start0(); started = true; } finally { try { if (!started) { group.threadStartFailed(this); } } catch (Throwable ignore) { /* do nothing. If start0 threw a Throwable then it will be passed up the call stack */ } } }