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日

相关推荐

  • JavaWeb入门案例之用户注册

    前言 之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。 下面用一个用户注册的小案例,来总结一下…

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

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

    2020年12月11日
    1.5K
  • Java自学之I/O编程

    I/O(Input/Output,输入/输出)可以实现数据的读取与写入操作,Java针对I/O操作的实现提供了java.io工具包,此包的核心组成由File类、InputStrea…

    2020年12月21日
    1.4K
  • JAVA学习路线之夯实基础

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

    2020年1月14日
    1.8K
  • Java自学之泛型

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

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

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

    2019年3月19日
    1.9K
  • JAVA基础知识整理

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

    2020年1月11日
    1.8K
  • Java自学之数组

    在Java中数组是一组相关变量的集合,属于引用数据类型。 定义 数组引用传递分析 数组属于引用数据类型,在数组使用时需要通过关键字new开辟堆内存空间,一块堆内存空间也可以同时被多…

    2020年11月26日
    1.4K
  • MyBatis之MyBatis-Generator标签配置及意义

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

    2019年12月27日
    2.0K
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    498

发表回复

登录后才能评论