美文网首页
Java多线程--创建线程的2种方式

Java多线程--创建线程的2种方式

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2021-04-28 17:38 被阅读0次

    线程创建2种方式,一是继承Thread类,一是实现Runnable接口。这里介绍了这2中方式,同时展现了创建线程时,传入参数的2种方式:set方法和构造函数。

    方法1-继承Thread

    package com.test;
    import java.util.Date;
    import lombok.Setter;
    
    public class ThreadTest1 {
    
        public static void main(String[] args) {
            String str = "test";
            Date d = new Date();
            MyThread t = new MyThread(str, d);
            t.setId(100);
            // 启动新线程
            t.start(); 
        }
    }
    
    class MyThread extends Thread {
        
        private String str;
        private Date d;
        
        public MyThread(String str, Date d) {
            this.str = str;
            this.d = d;
        }
        
        @Setter
        private Integer id;
        
        
        @Override
        public void run() {
            System.out.println(str);
            System.out.println(d);
            System.out.println(id);
        }
    }
    

    方法2-实现Runnable接口

    因'start()'方法是Thread类的,所以这个不能直接调用,要用线程类去调用。

    package com.test;
    import java.util.Date;
    import lombok.Setter;
    
    public class ThreadTest2 {
        
        public static void main(String[] args) {
            String str = "test2";
            Date d = new Date();
            TestThread t = new TestThread(str, d);
            t.setId(200);
            // 启动新线程
            new Thread(t).start();
        }
    }
    
    class TestThread implements Runnable {
        
        private String str;
        private Date d;
        
        public TestThread(String str, Date d) {
            this.str = str;
            this.d = d;
        }
        
        @Setter
        private Integer id;
        
        
        @Override
        public void run() {
            System.out.println(str);
            System.out.println(d);
            System.out.println(id);
        }
    }
    

    实现Runnable接口比继承Thread类所具有的优势:

    • 适合多个相同的程序代码的线程去处理同一个资源
    • 可以避免java中的单继承的限制
    • 增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
    • 线程池只能放入实现RunableCallable类线程,不能直接放入继承Thread的类

    相关文章

      网友评论

          本文标题:Java多线程--创建线程的2种方式

          本文链接:https://www.haomeiwen.com/subject/arhrfktx.html