zoukankan      html  css  js  c++  java
  • java架构师学习路线-Java并发编程的五种状态和两种创建方式

    图灵学院 java架构师学习路线

    最近有读者在学习Java并发编程,希望我能够写一篇关于Java并发编程的文章来供他参考,就这样我开启了我的寻找Java并发编程之路,下面是关于我对Java并发编程资料的收集。

    图片.png

    一.并发编程的五种状态:

    1.失去占用资源会使线程变为阻塞状态,根据失去资源的方式或原因阻塞状态分为3种。

    同步阻塞:线程获取synchronized同步锁失败。

    其它阻塞:sleep()、join()、IO请求,都会使线程进入阻塞状态。

    等待阻塞:线程执行wait()方法。

    2.死亡状态

    任务执行完成或者终止条件发生,线程进入终止状态。

    3.运行状态

    就绪状态的线程获取到CPU资源就可以执行run(),线程变为运行状态。

    4.就绪状态

    线程对象调用start()之后线程进入就绪状态,在就绪队列中等待JVM的线程调度器调度。

    5.新建状态

    使用new关键字建立一个线程对象后,程序start()这个线程之前都是新建状态。

    阻塞状态

    二.创建并发编程的两种方式:

    1.继承Thread类

    1.1.实现步骤:

    1.创建继承Thread的子类,并重写run()方法。

    2.创建子类的实例对象。

    3.子类实例对象调用start()方法启动线程。

    1.2.代码示例:

    图片.png

    图片.png

    实现Runnable接口

    2.1.实现步骤:

    1.创建Runnable的实现类,并实现run()方法。

    2.实现Callable接口

    2.2.实现步骤:

    1.创建Callable的实现类,并实现call()方法,然后创建这个实现类的实例。这里我们不写实现类,而是采用更方便的Lambda表达式。

    2.使用FutureTask类包装Callable对象。

    3.使用FutureTask对象作为Thread对象的target创建Thread线程对象并调用start()方法启动线程。

    4.调用FutureTask对象的get()方法获得子线程执行结束后的返回结果。

    2.3.代码示例:

    图片.png

    图片.png

     图片.png

    Java并发编程之路本就是索然无味的,如果我们还不从编程中找点乐趣,面对枯燥的代码的时候只能是“它认识我,我不认识它”这种状况,我们要从学习中体会乐趣,这样才能增加我们的探知欲。

    我们生活中不乏那种三分热度的人,我之前也是对什么事情都喜欢尝试一下,结局自然是一无所获了。对新鲜事物拥有好奇心本没错,但要是做事情要是没个耐性的话终究也只能是一无所有了。

    总结:所以最好我们在开始做一个决定之前三思而后行,不然这样的话是对你自己的不负责也是对你做的事情的不负责,要知道你做的那个决定可能会改变你现在的处境,而你走到一半就不走了,这样的话你让别人怎么看待你这个人?

    尽管Java架构师学习路线已经分享给大家,但有多少人能认真的去践行,这个就难说了。互联网寒冬已经到来,作为程序员,更应在此时提高自己,有着更高远的追求。

    篇幅有限,如果需要更详细的java架构师学习路线资料可加博主qq:1993712276,或者去图灵官网查看

  • 相关阅读:
    [工作中的设计模式]中介模式模式Mediator
    [工作中的设计模式]责任链模式chain
    [工作中的设计模式]迭代子模式Iterator
    [工作中的设计模式]组合模式compnent
    TI IPNC Web网页之流程分析
    TI IPNC Web网页之GoDB开发环境
    安装ubuntu时将boot目录单独挂载的意义
    ubuntu添加自定义vga输出分辨率
    GCC编译默认的头文件搜索路径
    设置搜狗输入法在任何时候按左右两侧的shift激活
  • 原文地址:https://www.cnblogs.com/tulingxueyuan/p/13340501.html
Copyright © 2011-2022 走看看