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自学之继承

    在面向对象的设计过程中,类是基本的逻辑单位。但是对于这些基本的逻辑单位需要考虑到重用的设计问题,所以在面向对象的设计里提供有继承,并利用这一特点实现类的可重用性定义。 类继承定义 …

    2020年12月3日
    1.6K
  • JAVA基础知识整理

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

    2020年1月11日
    1.9K
  • Java自学之多线程编程

    多线程编程是Java语言最为重要的特性之一。利用多线程技术可以提升单位时间内的程序处理性能,也是现代程序开发中高并发的主要设计模式。 进程与线程 进程是一个应用程序。线程是一个进程…

    2020年12月16日
    1.7K
  • JavaWeb入门案例之用户注册

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

    2021年1月13日
    1.8K
  • STS插件mybatis-generator安装及使用

    断断续续学习Java也有好长时间了,没有师傅带,没有项目练手,学习超级慢,也很烦。视频、书籍翻看了一大推,还是没有目标。 相信滴水成海,外加条条大路通罗马,只要坚持,自己终能达成目…

    2019年12月27日
    2.5K
  • Java自学之数组

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

    2020年11月26日
    1.5K
  • servlet学习之获取表单数据(IDEA2020.2篇)

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

    2020年9月8日
    1.7K
  • Java自学之类与对象

    定义 类是由成员属性和方法组成。成员属性主要定义类的一个具体信息,实际上一个成员属性就是一个变量,而方法是一些操作的行为。类的定义基础语法如下。 一个类定义完成后并不能够被直接使用…

    2020年11月25日
    1.5K
  • Java自学之泛型

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

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

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

    2019年3月21日
    2.2K

发表回复

登录后才能评论