Java多线程-----创建线程的几种方式
发布时间:2020-12-15 07:59:17 所属栏目:Java 来源:网络整理
导读:? ? 1.继承Thread类创建线程 定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体 创建Thread子类的实例,也就是创建了线程对象 启动线程,即调用线程的start()方法 package com.practise.thread;
? ?1.继承Thread类创建线程
package com.practise.thread; public class InheritThread extends Thread { @Override public void run() { for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } } package com.practise.thread; public class ThreadTest { public static void main(String[] args) { //线程类 InheritThread inheritThread = new InheritThread(); inheritThread.setName("线程一");//设置线程名称 inheritThread.start(); //主线程 Thread.currentThread().setName("主线程"); for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } } ? ?2.实现Runnable接口创建线程
package com.practise.thread; public class ImplementRunnable implements Runnable { @Override public void run() { for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } } package com.practise.thread; public class ThreadTest { public static void main(String[] args) { //实现Runnable接口 ImplementRunnable implementRunnable=new ImplementRunnable(); Thread thread=new Thread(implementRunnable); thread.setName("线程二"); thread.start(); //主线程 Thread.currentThread().setName("主线程"); for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } } ? ?3.使用Callable和Future创建线程
package com.practise.createthread; import java.util.concurrent.Callable; public class ImplementCallable implements Callable<Integer> { @Override public Integer call() { Integer total = 0; try { for (int i = 1; i <= 50; i++) { total += i; } return total; } catch (Exception ex) { ex.printStackTrace(); } return null; } } package com.practise.createthread; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class ThreadTest { public static void main(String[] args) { ImplementCallable implementCallable=new ImplementCallable(); FutureTask<Integer> task=new FutureTask<Integer>(implementCallable); Thread thread=new Thread(task,"有返回值的线程"); thread.start(); try { System.out.println(task.get()); } catch (Exception ex) { ex.printStackTrace(); } Thread.currentThread().setName("主线程"); for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – JDesktopPane调整大小
- java – 使用xmlelement defaultvalue注释指定默认值的简单
- java – 有一个sql PreparedStatement池有意义吗?
- java实现文件上传下载和图片压缩代码示例
- java – 如何从XML Spring调度配置到注释/代码配置?
- java – 如何使用GridLayout设置组件大小?有没有更好的办法
- java – 在库中使用依赖注入
- Spring cloud restTemplate 传递复杂参数的方式(多个对象)
- 详解如何将已有项目改造为Spring Boot项目
- 用gcj编译java和XStream. (例外:无法创建XmlPullParser)
推荐文章
站长推荐
- java – org.apache.struts.action.ActionMessag
- Android动画之:Frame动画
- 如何在Java中使用POI中的XWPFTable合并单元格(或
- JVM性能调优(1) —— JVM内存模型和类加载运行
- java – Magento Rest“Admin role not found”错
- 虚拟化管理服务器(手动安装虚拟机,写脚本利用命
- java – 使用eclipse和maven 2,如何获得sqljdbc4
- java – Eclipse:在编辑器中显示每一行的作者?
- java – 将SuperClass的对象转换为子类
- Java设计替代if-else和instanceof
热点阅读