三种线程的创建方式学习
线程名称设置,创建
- 方法1;通过继承Thread创建线程
package com.Thread; public class ThreadDemo01 { public static void main(String[] args) { Thread.currentThread().setName("修主线程"); //对子线程进行启动 TreadDemo02 thread = new TreadDemo02("构造器传字符串参修改线程名字");//这里不能用子类进行调用方法,调用的话就当作普通方法执行了 thread.start(); //main的主线程 for(int i =1;i<=10;i++) { System.out.println(Thread.currentThread().getName()+i); } } } //开辟子线程工作区域 class TreadDemo02 extends Thread { public TreadDemo02(String name){ super(name); } public void run() { for(int i =1;i<=10;i++){ System.out.println(this.getName()+i); } } }
-
方法2,通过实现接口Runnable来创建线程
(Runnable接口在Thread类中实现;由于一个类只能有一个父类;java的单继承;多实现特点;选择用接口Runnable;更加灵活;高效)
package com.Thread; //线程体 public class Demo003 implements Runnable{ int ticketnum = 10; public void run() { //有100人在抢票 for(int i = 1;i<=100;i++){ if(ticketnum>0){ System.out.println("我抢到了火车票;第"+ticketnum--+"张;从"+Thread.currentThread().getName()+"窗口"); } } } } package com.Thread; public class Demo002 { public static void main(String[] args) { Demo003 demo003 = new Demo003(); //Runnable方法调用线程;共享资源的能力也会强一些,不需要非得加个static来修饰 //这里的名字需要从获取主线程进行获取Thread.currentThread().getName();默认为main //操控体 Thread t1 = new Thread(demo003,"1号"); t1.start(); Thread t2 = new Thread(demo003,"2号"); t2.start(); Thread t3 = new Thread(demo003,"3号"); t3.start(); } } - 方法3,Callable接口实现了线程体可以有返回值;可以有异常的述求;弥补了上述的不但是在实现线程启动时必须调用futureTask作为中间键进行嵌套本身类对象demo004和thread的连接启动
package com.Thread; import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class Demo004 implements Callable { @Override public Object call() throws Exception { Random random = new Random(); int i = random.nextInt(5); return i; } } class Demo005{ public static void main(String[] args) throws Exception { Demo004 demo004 = new Demo004(); FutureTask futureTask = new FutureTask(demo004); Thread thread = new Thread(futureTask); thread.start(); //这里通过futureTask调用返回值进行接收 Object o = futureTask.get(); System.out.println(o); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!