publicclassTestThread{publicstaticvoidmain(String[] args){System.out.println(" main ... start");Thread01 thread =newThread01();
thread.start();// 启动线程System.out.println(" maind ... end ....");}publicstaticclassThread01extendsThread{@Overridepublicvoidrun(){System.out.println("当前线程:"+Thread.currentThread().getId());int i =10/2;System.out.println("运行结果:"+ i);}}}
2.实现 Runnable 接口
publicclassTestThread{publicstaticvoidmain(String[] args){System.out.println(" main ... start");Thread01 thread01 =newThread01();newThread(thread01).start();// 启动线程System.out.println(" maind ... end ....");}publicstaticclassThread01implementsRunnable{@Overridepublicvoidrun(){System.out.println("当前线程:"+Thread.currentThread().getId());int i =10/2;System.out.println("运行结果:"+ i);}}}
3. 实现Callable 接口
publicclassTestThread{publicstaticvoidmain(String[] args)throwsExecutionException,InterruptedException{System.out.println(" main ... start");FutureTask<Integer> futureTask =newFutureTask<>(newThread01());newThread(futureTask).start();// 启动线程Integer value = futureTask.get();System.out.println(" maind ... end ....");}publicstaticclassThread01implementsCallable<Integer>{@OverridepublicIntegercall(){System.out.println("当前线程:"+Thread.currentThread().getId());int i =10/2;System.out.println("运行结果:"+ i);return i;}}}
4. 线程池
publicclassTestThread{publicstaticExecutorService executorService =Executors.newFixedThreadPool(10);publicstaticvoidmain(String[] args)throwsExecutionException,InterruptedException{System.out.println(" main ... start");//1. 没有返回值
executorService.execute(newThread01());//2. 可以获取返回值Future<Integer> future = executorService.submit(newThread02());Integer i = future.get();System.out.println(" maind ... end ...."+ i);}publicstaticclassThread01implementsRunnable{@Overridepublicvoidrun(){System.out.println("当前线程:"+Thread.currentThread().getId());int i =10/2;System.out.println("运行结果:"+ i);}}publicstaticclassThread02implementsCallable<Integer>{@OverridepublicIntegercall(){System.out.println("当前线程:"+Thread.currentThread().getId());int i =10/2;System.out.println("运行结果:"+ i);return i;}}}