Java多线程:实现Runnable接口创建线程方式详解

先看例子:####

Copy
/**实现Runnable接口创建线程步骤: * 1、创建一个实现Runnable接口的类 * 2、重写Runnable类中抽象的run()方法 * 3、创建实现类的对象 * 4、声明Thread类,同时将实现类对象作为参数传递 * 5、用Thread类的对象调用start() */ //例子:多线程售票(暂未安全同步) class MyThread implements Runnable{ private int num = 100; public void run(){ while (true){ System.out.println(Thread.currentThread().getName()+"票号:"+num--); if(num == 0) break; } } } public class ThreadTest2 { public static void main(String[] args) { //m相当于是提供了线程所要执行的run(),所以可以供不同线程调用 MyThread myThread = new MyThread(); //将Runnable实现类的对象传递给Thread类中的Runnable类型的属性,由此调实现用 Thread t = new Thread(myThread); Thread t1 = new Thread(myThread); Thread t2 = new Thread(myThread); //设置线程名 t.setName("窗口1:"); t1.setName("窗口2:"); t2.setName("窗口3:"); //通过调用start执行myThread对象的run(),实现三个线程共用一个方法,但是对象始终只有一个,记录票数的子类也只有一个 t.start(); t1.start(); t2.start(); } }

解析:#

通过源码发现Thread类也实现了Runnable接口,通过所以此创建实例的过程是一个Runnable的实现类对象(myThread),传递给另一个Runnable实现类对象(t、t1、t2)的过程,而Thread类中还定义了个Runnable类型的属性,用于配合接收Thread类的带参构造器传递过来的Runnable类型的对象,现在对象有了,要调用什么姿势还不是拍拍屁股的事情?(实际是Thread类中的run()判断出有Runnable对象传递进来了,就通过该对象调用run())

补充:忽略安全同步问题,例子实现了多线程售票,可以看出start()方法负责开启线程并调用负责线程执行内容的run()方法。

posted @   "无问西东"  阅读(1117)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
网络创业项目 123how出海导航
点击右上角即可分享
微信分享提示
CONTENTS