创建线程的方法——Java全栈知识(38)

创建线程的方法

1、继承 Thread 类重写run 方法

public class MyThread extends Thread {

    @Override
    public void run() {
        System.out.println("MyThread...run...");
    }

    
    public static void main(String[] args) {

        // 创建MyThread对象
        MyThread t1 = new MyThread() ;
        MyThread t2 = new MyThread() ;

        // 调用start方法启动线程
        t1.start();
        t2.start();

    }
    
}

2、实现 Runnable 接口重写 run 方法

public class MyRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println("MyRunnable...run...");
    }

    public static void main(String[] args) {

        // 创建MyRunnable对象
        MyRunnable mr = new MyRunnable() ;

        // 创建Thread对象
        Thread t1 = new Thread(mr) ;
        Thread t2 = new Thread(mr) ;

        // 调用start方法启动线程
        t1.start();
        t2.start();

    }

}

3、实现 Callable 接口重写 call 方法

public class MyCallable implements Callable<String> {

    @Override
    public String call() throws Exception {
        System.out.println("MyCallable...call...");
        return "OK";
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        // 创建MyCallable对象
        MyCallable mc = new MyCallable() ;

        // 创建F
        FutureTask<String> ft = new FutureTask<String>(mc) ;

        // 创建Thread对象
        Thread t1 = new Thread(ft) ;
        Thread t2 = new Thread(ft) ;

        // 调用start方法启动线程
        t1.start();

        // 调用ft的get方法获取执行结果
        String result = ft.get();

        // 输出
        System.out.println(result);

    }

}

注意: 我们在使用 Callable 创建现成的时候需要指定泛型的类型,泛型的类型与 call 方法返回的值一致。
Callable 创建线程适合于需要返回值的时候,我们只要使用 ft. get ()方法即可取出返回值。

4、线程池创建线程

public class MyExecutors implements Runnable{

    @Override
    public void run() {
        System.out.println("MyRunnable...run...");
    }

    public static void main(String[] args) {

        // 创建线程池对象
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        threadPool.submit(new MyExecutors()) ;

        // 关闭线程池
        threadPool.shutdown();

    }

}

5、runnable 和 callable 有什么区别

参考回答:

  1. 返回值: Runnable 接口 run 方法没有返回值;Callable 接口 call 方法有返回值,是个泛型,和 Future、FutureTask 配合可以用来获取异步执行的结果
  2. 异常处理: Callable 接口的 call ()方法允许抛出异常;而 Runnable 接口的 run ()方法的异常只能在内部消化,不能继续上抛

6、线程的 run()和 start()有什么区别?

  • start(): 用来启动线程,通过该线程调用 run 方法执行 run 方法中所定义的逻辑代码。start 方法只能被调用一次。
  • run (): 封装了要被线程执行的代码,可以被调用多次。

[!info]
也就是调用 run()方法就是相当于在主进程中执行一次,调用 start() 方法就是开启一个新的线程去执行 run()方法中的内容。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java全栈知识体系是指掌握Java语言及其应用于不同技术领域的相关知识Java是一种广泛应用于后台开发、大数据处理、移动开发以及前端开发的编程语言,因此Java全栈开发人员需要掌握一系列技术和工具。 首先,Java全栈开发人员需要具备扎实的Java语言基础,包括面向对象编程、多线程编程、异常处理等知识。此外,掌握Java的核心类库也是必要的,比如集合框架、IO流、网络编程等。 其次,Java全栈开发人员需要熟悉Web开发技术,包括JavaWeb开发JavaEE技术、Servlet、JSP、Spring MVC等。这些技术用于实现Web应用的后台逻辑和与前端页面的交互。 另外,Java全栈开发人员需要了解数据库相关知识,包括数据库的设计和管理,SQL语言,以及Java与数据库的交互技术,比如JDBC、ORM框架如Hibernate和MyBatis等。 此外,Java全栈开发人员还需要掌握前端开发技术,如HTML、CSS、JavaScript、Ajax等,以便实现Web应用的前端页面和与后端的交互。 对于移动开发Java全栈开发人员需要了解Android开发技术,包括Android框架、Android Studio开发环境、Android组件等。 最后,Java全栈开发人员还可以扩展其他领域的知识,如大数据技术(Hadoop、Spark)、云计算等,以应对当前技术的变化和市场需求。 总之,Java全栈知识体系是一个综合性的技术体系,要求开发人员在Java语言基础上熟悉Web开发、数据库、前端开发以及可能的其他领域的知识,以能够独立完成从后端到前端的整个应用开发过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东莞呵呵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值