多线程-实现接口implements Runnable(常用)-继承线程extends Thread
java实现线程方式
第一种方式:继承 extends Thread;
- 实现线程的第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法。
- 创建线程对象:new就行了;
- 启动线程: 调用线程对象的start()方法。作用是:启动一个分支线程,在JVM中开辟一个新的栈空间
- 这段代码任务完成之后,瞬间就结束了。
- 启动成功的线程会自动调用run方法,并且run方法在分支栈的栈底部(压栈)。
- run方法在分支栈的栈底部,main方法在主栈的栈底部。run和main是平级的。
//第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法。 // 定义线程类 public class MyThread extends Thread{ public void run(){ } } // 创建线程对象 MyThread t = new MyThread(); // 启动线程。 t.start();
public class ThreadTest{ public static void main(String[] args) { // 这里是main方法,这里的代码属于主线程,在主栈中运行。 新建一个分支线程对象 MyThread t = new MyThread(); t.start(); // 这里的代码还是运行在主线程中。 for(int i = 0; i < 1000; i++){ System.out.println("主线程--->" + i); } } } public class MyThread extends Thread { @Override public void run() { // 编写程序,运行在分支栈。 for(int i = 0; i < 1000; i++){ System.out.println("分支线程--->" + i); } } }
第二种方式:implements Runnable 编写一个类实现Runnable接口,它还可以去继承其它的类,更灵活。
- 实现java.lang.Runnable接口,实现run方法
- Thread t = new Thread(new 实现类())。
// 定义一个可运行的类 public class MyRunnable implements Runnable { public void run(){ } } // 创建线程对象 Thread t = new Thread(new MyRunnable()); // 启动线程 t.start();
public class MusicDemo implements Runnable{ public void run(){ for(int i=0;i<100;i++){ System.out.println("播放音乐"+i); } } } Runnable musicDemo = new MusicDemo(); //Runnable接口中没有start方法需要Thread线程new出来 Thread thread = new Thread(musicDemo ); thread .start(); //合并之后 Thread thread = new Thread(new MusicDemo()); thread.start();
第二种方式:匿名内部类
public class ThreadTest04 { public static void main(String[] args) { // 创建线程对象,采用匿名内部类方式。这是通过一个没有名字的类,new出来的对象。 Thread t = new Thread(new Runnable(){ @Override public void run() { for(int i = 0; i < 100; i++){ System.out.println("t线程---> " + i); } } }); // 启动线程 t.start(); for(int i = 0; i < 100; i++){ System.out.println("main线程---> " + i); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!