工具IDEA2020.2jdk 1.8本文代码下载地址1百度网盘通过网盘分享的文件ThreadDemo多线程.zip链接: https://pan.baidu.com/s/1CHE5KQyGGusVehyNf4eacQ?pwdnek2 提取码: nek22夸克网盘我用夸克网盘给你分享了「ThreadDemo多线程.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/bb973b5mdj链接https://pan.quark.cn/s/6fa14a7ccb28?pwdSZjE提取码SZjE一、实现多线程的方式1.继承Thread类2.实现Runnable接口3.实现Callable接口 FutureTask类二、 创建项目打开IDEA点击File—New—Project下面这里选择Java然后右侧选择SDK版本这里选择1.8版本下一步输入Project name这里 项目名称为 ThreadDemo右下角选择“Finish”下面开始创建包右击src选择New—Package包名暂定为com.guo三、多线程的创建1继承Thread类右击我们的包名选择New—Java Class第一个类名为ThreadTest参考代码如下packagecom.guo;classMyThreadextendsThread{Overridepublicvoidrun(){// 线程执行的代码for(inti0;i3;i){System.out.println(线程 this.getName() 正在运行:i);}}}publicclassThreadTest{publicstaticvoidmain(String[]args){MyThreadthread1newMyThread();MyThreadthread2newMyThread();thread1.start();// 启动线程thread2.start();}}执行效果如下可以看到两个线程交替执行。2实习Runnable接口右击我们的包名选择New—Java Class类名为ThreadTest2参考代码如下classMyRunnableimplementsRunnable{Overridepublicvoidrun(){// 线程执行的代码for(inti0;i3;i){System.out.println(线程 Thread.currentThread().getName() 正在运行:i);}}}publicclassThreadTest2{publicstaticvoidmain(String[]args){Threadthread1newThread(newMyRunnable());Threadthread2newThread(newMyRunnable());thread1.start();// 启动线程thread2.start();}}实现效果如下3匿名内部类右击我们的包名选择New—Java Class类名为ThreadTest3代码参考如下packagecom.guo;publicclassThreadTest3{publicstaticvoidmain(String[]args){// 方式1匿名Thread子类newThread(){Overridepublicvoidrun(){System.out.println(匿名Thread子类方式);}}.start();// 方式2匿名Runnable实现newThread(newRunnable(){Overridepublicvoidrun(){System.out.println(匿名Runnable实现方式);}}).start();}}4Callable 接口和 FutureTask右击我们的包名选择New—Java Class类名为ThreadTest4参考代码如下packagecom.guo;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;// 1. 实现Callable接口classMyCallableimplementsCallableInteger{OverridepublicIntegercall()throwsException{intsum0;for(inti1;i100;i){sumi;Thread.sleep(10);// 模拟耗时操作}returnsum;}}publicclassThreadTest4{publicstaticvoidmain(String[]args){// 2. 创建FutureTask对象FutureTaskIntegerfutureTasknewFutureTask(newMyCallable());// 3. 启动线程Threadthread1newThread(futureTask);thread1.start();try{// 4. 获取结果阻塞直到计算完成IntegerresultfutureTask.get();System.out.println( 方式1计算结果result);}catch(InterruptedException|ExecutionExceptione){e.printStackTrace();}}}
