Java实现并发编程的三种方式

本文详细介绍了Java中实现多线程编程的三种方法,包括实现Runnable接口、实现Callable接口和继承Thread类。同时,深入探讨了线程的生命周期、线程调度、线程池以及线程相关操作如捕获异常和线程协作。
摘要由CSDN通过智能技术生成

GitHub地址:https://github.com/ShareCookies/SHARE_CONTENT2/blob/master/java%E5%9F%BA%E7%A1%80%E7%BC%96%E7%A8%8B/%E5%A4%9A%E7%BA%BF%E7%A8%8B/README.md

 

java实现多线程编程的三种方式:
    方式1.
        介绍:
            线程可以驱动任务,因此需要一种描述任务的方式。
            Runnable接口可以定义任务,实现Runnable接口重写run()方法即定义了一个任务。
        实现:
            编写任务(即实现Runnable接口)
            创建线程并驱动任务。
                用new Thread(Runnable target).start()启动一线程,并驱动任务:
        例:
            new Thread(new Runnabel(){//实现Runnable接口
                public void run(){
                    System.err.println("线程");
                }
            }).start();
            实现Runnabel接口:
                ./案例/Task.java
    方式2.:
        实现Callable接口
        介绍:
            Callable 接口相较于Runnable 接口,可以有返回值,并且可以抛出异常。
            https://www.cnblogs.com/baizhanshi/p/6425209.html
        实现:
            1.编写任务(即实现Callable接口)
                注:Callable的泛型对应call()的返回值类型
            2.Callable编写的任务需要用Future包裹,可用来接收任务返回值。
                注:FutureTask 是  Future 接口的常用实现类
            3.创建线程驱动修饰过的任务
            4.通过FastTask获取任务完成后的返回结果
        例:
            ./案例/Callable/CallaleDemo.java
        附:
            Future:
            方法:
                isDone():
                    isDone()方法可以用来检查分配的任务是否已经被处理了
                get():    
                    接收线程运算后的结果
    方式3.继承Thread,并重写run()方法:
        介绍:
            直接继承Thread,重写run方法来编写任务,最后启动线程来驱动任务。
        例:
            class ThreadTest extends Thread{
                public void run(){//在该方法里写该线程要干的事。
                    System.err.println("线程");
                }
            }
            ThreadTest t = new ThreadTest();
            t.start();//线程的启动:
        注:
            为啥可以直接重写Thread的run来实现多线程:
                线程是用来驱动任务的,
                而 Thread 又实现了 Runnabel 接口,
                所以我们可以直接重写Thread的 run 方法来实现任务,并通过Thread的start方法来启用线程来驱动任务执行。
                注:我认为Thread主要功能是用来开启线程,定义任务只是他的一个附属功能。
            注:
                1.
                private native void start0();
                这个是Thread用来启动线程的方法,它是由虚拟机去调用了由c语言实现的启动线程的方法。
                2.
                我认为这句话可以证明,线程是用来驱动任务的
                The <code>Runnable</code> interface should be implemented by any
                class whose instances are intended to be executed by a thread.
并发编程问题之资源共享:!
    ./共享资源.txt
注:
    线程池:
        ./线程池.txt
    程序结束:
        1.对Java程序来说,一个进程只要还有一个前台线程在运行,那么进程就不会结束。
        如果一个进程只有后台线程运行,那么该进程就会结束。
            注:一个线程未进入死亡状态,垃圾回收器是无法清除它。
    线程的生命周期:
        ./线程相关内容.txt goto:线程的生命周期
    线程的调度:
        ./线程相关内容.txt goto:线程的调度
    Thread类方法介绍:
        ./Thread类.txt
        设置后台线程:
            ./Thread类.txt goto:后台线程
    线程的相关操作:
        捕获线程中异常:
            ./线程的相关操作.txt goto:捕获线程中异常
        终结任务:
            ./线程的相关操作.txt goto:终结任务
        线程协作(线程通信):
            ./线程的相关操作.txt goto:线程协作(线程通信)
附:
    线程相关内容介绍:
        ./线程相关内容.txt goto:线程相关内容介绍
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值