多线程-实现接口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(){ 
      forint 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);
        }
    }
}
复制代码

 

posted @   280887072  阅读(1702)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示