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();}}}