Java开发基础入门--java多线程编程核心技术
小职 2021-08-19 来源 : 阅读 910 评论 0

摘要:本文主要介绍了Java开发基础入门--java多线程编程核心技术,通过具体的内容向大家展现,希望对大家Java开发的学习有所帮助。

本文主要介绍了Java开发基础入门--java多线程编程核心技术,通过具体的内容向大家展现,希望对大家Java开发的学习有所帮助。

Java开发基础入门--java多线程编程核心技术


Java多线程技能

简单的介绍常用的线程实现方法,重点掌握Thread类,需要学会线程的启动,如何使线程停止或者暂停,线程的优先级,线程安全相关的问题。


1.1进程和多线程概述

这本书的重点讲解在与多线程技术,多线程技术肯定离不开进程相关的知识点,进程 是操作系统结构的基础,是一次程序的执行;简单理解就是操作系统中运行的exe程序,jvm也相当于是一个进程。线程在进程中独立运行的子任务,好比一个程序有多种功能,一个功能就是一个线程。进程负责向操作系统申请资源。多线程就是在同一时间内执行更多不同的任务。单任务及单线程特点就是排队执行,及同步,类似在cmd中输入一条命令后,必须等待这条命令执行完才可以执行下一条命令。多线程也就是在使用异步。

在什么场景下使用多线程技术?

1)阻塞。一旦系统中出现了阻塞现象,则可以根据实际情况来使用多线程技术提高运行效率。

2)依赖。业务分为两个执行过程,分别是A和B。当A业务发生阻塞情况时,B业务的执行不依赖A业务的执行结果,这时可以使用多线程技术来提高运行效率;如果B业务的执行也依赖A业务的执行结果,则可以不使用多线程技术,按顺序进行业务的执行。

在实际的开发应用中,不要为了使用多线程而使用多线程,要根据实际场景解决。


1.2使用多线程

一个进程正在运行时至少会有一个线程在运行,这种情况在java中也是存在的,这些线程在后台默默的执行,例如,调用public static void main()方法的线程就是这样的,而且它由jvm创建。在控制台输出的main其实就是一个名为main的线程在执行main()方法中的代码。


1.2.1 继承Thread类

java的jdk开发包已经自带了多线程技术的支持,通过它可以方便地进行多线程编程。实现多线程编程只要有两种方式:一种是继承Thread类,另一种就是实现Runnable接口。其实Thread类也实现了Runnable接口。


public class Thread implements Runnable

Runnable run1 =new Thread();

Runnable run2 = new MyThread();

Thread t1 = new MyThread();


使用继承Thread类的方式创建线程时,最大的局限性就是不支持多继承,java语言的特点就是仅支持单继承,所以为了满足支持多继承,完全可以实现Runnable接口,本质上没有什么区别。

继承Thread类


public class MyThread extends Thread{

    public MyThread(String name){

        super(null,null,name);

    }

    int piao =10;

    @Override

    public void run() {

        while(piao>0){

            System.out.println(Thread.currentThread().getName()+"......"+piao--);

        }

    }


    public static void main(String[] args) {

        MyThread mt = new MyThread("x");

        mt.start();

       // mt.run();

    }


实现Runnable接口


public class MyRunnable implements Runnable{


    int piao = 10;

    @Override

    public void run() {

        while(piao>0){

            System.out.println(Thread.currentThread().getName()+"-----"+piao--);

        }

    }


    public static void main(String[] args) {

        Runnable r =new MyRunnable();

        Thread t =new Thread(r);

        t.start();

    }


}


上面的代码都是采用start()方法启动一个线程,线程启动后会自动调用线程对象中的run方法,run方法代表了一个线程将要完成的某 些工作及任务,是线程执行任务的入口。

start()方法耗时的原因

1.通过JVM告诉操作系统创建Thread

2.操作系统开辟内存并使用Windows SDK中的create Thread()函数创建Thread线程对象。

3.操作系统对Thread对象进行调度,以确定执行时机

4.Thread在操作系统中被执行成功

可以确定一点在使用多线程时,代码的运行结果与代码的执行顺序或调用顺序是无关的。另外线程是一个子任务,cpu以不确定的方式,或者是以随机的时间来调用线程中的run()方法。


1.2.2 使用常见命令分析线程信息

可以在运行的进程中创建线程,如果想查看这些线程的状态与信息,可以采用三种常用命令,分别是jps+jstack.exe、jmc.exe和jvisualvm.exe


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

Java开发基础入门--java多线程编程核心技术

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved