packagecom.scfenzhi.thread.create;importorg.junit.Test;publicclassExtendsThreadWay{@Testpublicvoidtest1(){newSubThread().start();}privatestaticclassSubThreadextendsThread{@Overridepublicvoidrun(){for(int i =0; i <100; i++)System.out.println(i);}}}
方式二:实现Runnable接口方式
packagecom.scfenzhi.thread.create;importorg.junit.Test;publicclassImplementsRunnableWay{@Testpublicvoidtest1(){newThread(newSubThread()).start();}privatestaticclassSubThreadimplementsRunnable{@Overridepublicvoidrun(){for(int i =0; i <100; i++)System.out.println(i);}}}
方式三:实现Callable接口方式
packagecom.scfenzhi.thread.create;importorg.junit.Test;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;publicclassImplementsCallableWay{@Testpublicvoidtest1()throwsExecutionException,InterruptedException{FutureTask<String> futureTask =newFutureTask<>(newSubThread());
futureTask.run();String result = futureTask.get();System.out.println(result);}privatestaticclassSubThreadimplementsCallable<String>{@OverridepublicStringcall()throwsInterruptedException{StringBuilder stringBuilder =newStringBuilder();for(int i =0; i <100; i++) stringBuilder.append(i);Thread.sleep(5000);return stringBuilder.toString();}}}