JAVA学习之多线程知识点整理

1、什么是进程?什么是线程?

进程是一个应用程序。线程是一个进程中的执行场景或者执行单元。一个进程可以启动多个线程。进程之间内存独立不共享。同一个进程中的线程之间,堆内存和方法区内存共享,但是栈内存独立,一个线程一个栈。

2、线程状态

创建状态

在程序中用构造方法创建一个线程对象后,新的线程对象便处于新建状态,此时,它已经有了相应的内存空间和其他资源,但还处于不可运行状态。

创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。

就绪状态

新建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列排队,等待CPU调度服务,这表明它已经具备了运行条件。

运行状态

当就绪状态的线程被调用并获得处理器资源时,线程就进入运行状态。此时将自动调用该线程对象的run()方法,run()方法定义了该线程的操作和功能。

阻塞状态

一个正在运行的线程在某些特殊情况下,如被人为挂起或需要运行耗时的输入/输出操作时,将让出CPU并暂时中止自己的运行,进入阻塞状态。在可运行状态下,如果调用sleep()、suspend()、wait()等方法,线程将进入阻塞状态。阻塞时,线程不能进入排队队列,只有当引起阻塞的原因被消除后,线程才可以转入就绪状态。

终止状态

当线程体中的run()方法运行结束后,线程即处于终止状态,处于终止状态的线程不具有继续运行的能力。

3、关于线程常用的方法、

Thread方法

public Thread(Runnable target,String name)

1、构造方法;

2、接收两个参数:Runnable接口子类对象及线程名称;

3、作用:实例化线程对象,同时设置线程名称;

setName方法

public final void setName(String name);

1、普通方法;

2、接收一个参数;

3、无返回值;

4、作用:设置线程名称;

getName方法

public final String getName();

1、普通方法;

2、无参;

3、有返回值:返回值类型String;

4、作用:获得线程名称;

currentThread方法

public static Thread currentThread();

1、静态方法;

2、无参;

3、有返回值:返回值Thread类型的对象;

4、获取当前线程对象;

sleep方法

static void sleep(long millis)

1、静态方法:Thread.sleep(1000);

2、参数是毫秒;

3、作用:让当前线程进入休眠,进入“阻塞状态”,放弃占用CPU时间片,让给其他线程使用。

4、Thread.sleep(1000)方法,可以做到这种效果:间隔特定的事件,去执行一段特定的代码;每隔多久执行一次。

isInterrupted方法

public boolean isInterrupted();

1、普通方法;

2、无参;

3、有返回值:返回值类型Boolean;

4、作用:判断线程是否被中断;

interrupt方法

public void interrupt();

1、普通方法;

2、无参;

3、无返回值;

4、作用:中断线程执行;

join方法

public final void join();

1、普通方法;

2、无参;

3、无返回值;

4、作用:强制执行某个线程,待其执行完毕后其他线程再继续执行;

yield方法

public static void yield();

1、静态方法;

2、无参;

3、无返回值;

4、作用:将当前的调度让给其他线程执行,自己再等待下次调度再执行。线程状态从运行状态回到就绪状态。

setPriority方法

public final void setPriority(int newPriority);

1、普通方法;

2、有参:参数为给线程设置的优先级值;优先级有三种:最高优先级MAX_PRIORITY【对应数值为10】、中等优先级NORM_PRIORITY【对应数值为5】、最低优先级MIN_PRIORITY【对应数值为1】

3、无返回值;

4、作用:设置线程的优先级;

getPriority方法

public final int getPriority();

1、普通方法;

2、无参;

3、有返回值:返回值int类型的数值;

4、作用:获取线程的对应的优先级数值;

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/java/multithreading.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2020年3月17日
下一篇 2020年6月24日

相关推荐

  • JAVA学习路线之夯实基础

    第一章 开发环境 JDK(Java SE Development Kit),Java标准版开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环…

    2020年1月14日
    1.7K
  • Java自学之异常的捕获与处理

    在程序开发中,程序的编译与运行是两个不同的阶段,编译主要针对的是语法检测,而在程序运行时却有可能出现各种各样的错误导致程序中断执行,那么这些错误在Java中统一称为异常。 异常处理…

    2020年12月11日
    1.4K
  • Java自学之泛型

    在Java语言中,为了方便接收参数类型的统一,提供了核心类Object,利用此类对象可以接收所有类型的数据(包括基本数据类型和引用数据类型)。但是由于其所描述的数据范围过大,所以在…

    2020年12月8日
    1.3K
  • spring boot练习篇之用户登录系统【接口篇】

    写在前面 抛弃JSP,只做纯粹的前后端分离项目。 作为一个资深前端工作者,想要转JavaWeb开发,无论是书籍,还是网上视频、资料,竟然没有一篇能清楚明白地讲解怎样搭建一个前后端分…

    2021年5月25日
    1.7K
  • JAVA基础知识整理

    终于下定决心2020年转JAVA开发,自学之路坎坷曲折。俗话说的话,好记性不如烂笔头。如果有小伙伴们也像我一样在JAVA自学之路上徘徊,那就关注一下我的博客网站。我会不定期更新一下…

    2020年1月11日
    1.8K
  • Java自学之内部类

    内部类是一种常见的嵌套结构,利用这样的结构使得内部类可以与外部类共存,并且方便地进行私有操作的访问。 内部类基本概念 内部类(内部定义普通类、抽象类、接口的统称)是指一种嵌套的结构…

    2020年12月14日
    1.5K
  • spring4.x学习之用户登录与注册

    在之前的文章中我已经把后端工程项目创建好了,接下来就是编写项目了。 首先,我先创建一个数据库。数据库使用的是MySQL,数据库管理工具用的是Navicat。 打开数据库管理工具Na…

    2019年3月21日
    2.1K
  • MyBatis之MyBatis-Generator标签配置及意义

    DTD 标签 <generatorConfiguration/>: 根标签,所有的配置都必须在该标签内配置;没有属性 <properties/>: 主要引用外部的pro…

    2019年12月27日
    1.9K
  • servlet学习之获取表单数据(IDEA2020.2篇)

    首先,创建一个servlet工程。 如果你不会用IDEA2020.2创建servlet工程,请打开下面链接浏览网站博文。 https://www.edu24.cn/course/j…

    2020年9月8日
    1.5K
  • spring4.x学习之创建工程

    断断续续学习Java有两三个月了,目前还是处于入门阶段。关于java及spring那些的设计理念方面的理论知识,不花费大量精力及时间是看不懂的(至少对于我这么一个前端转后端的初学者…

    2019年3月19日
    1.9K

发表回复

登录后才能评论