首页 > 编程语言 >Java学习笔记----线程基础

Java学习笔记----线程基础

时间:2022-12-27 22:22:26浏览次数:41  
标签:调用 run Thread ---- 线程 当前 Java 方法

线程

线程,进程可进一步细化为线程,是一个程序内部的一条执行路径

线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小

线程的创建与启动

Java语言中的JVM允许程序运行多个线程,它通过java.lang.Thread来实现

Thread类的特性

  • 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体
  • 通过该Thread对象的start()方法来启动这个线程,而非直接调用run()

创建的方法:

  • 方法一

    • 继承Thread类的子类
    • 重写Thread的run()方法 --------------> 将此线程执行的操作声明在run()方法中
    • 创建Thread子类的子类的对象
    • 调用此对象的start()
      • 启动当前线程
      • 调用当前线程的run()
  • 方法二:

    • 创建一个线程是声明实现类Runnable接口

    • 重写实现run方法

    • 创建该类的对象

    • 在创建Thread时作为参数传递,并启动

      • 启动线程
      • 调用当前线程的run() -------> 调用了Runnable类型的target的run()
    •   Demo demo = new Demo();
        new Thread(demo).start();
      

两种方法比较

优先选择:实现Runnable接口的方式

原因:

  1. 继承的方法具有单继承的局限性
  2. 实现的方式更适合来处理多个线程有共享数据的情况

常用方法

start():启动当前线程,调用当前线程的run()方法
run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
currentThread():静态方法,返回当前代码执行的线程
getName():获取当前线程的名字
setName():设置当前线程的名字
yield():释放当前cpu的执行权
join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全执行完以后,线程a才结束阻塞状态
sleep(millitime):让当前线程"睡眠"指定的毫秒,在指定的millitime毫秒时间内,当前线程是阻塞状态
isAlive():判断线程是否存活

线程的优先级

MAX_PRIORITY : 10级

MIN_PRIORITY : 1级

方法

getPriority() : 返回线程优先级

setPriority(int newPriority) : 改变线程优先级

高优先级的线程要抢占低优先级cpu的执行权,但只是从概率上讲,并不意味着高优先级的执行完后低优先级才执行

标签:调用,run,Thread,----,线程,当前,Java,方法
From: https://www.cnblogs.com/LruiBlog/p/17009132.html

相关文章

  • Vue3之toRaw 与 markRaw
    toRaw与markRawtoRaw:作用:将一个由reactive生成的响应式对象转为普通对象。ref的对象不行使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引......
  • csrf与auth认证
    目录csrf与auth认证今日内容概要今日内容详细csrf跨站请求伪造csrf校验策略csrf相关装饰器auth认证模块csrf与auth认证今日内容概要csrf跨站请求伪造csrf校验策略csr......
  • Node.js与npm
    Node.js与内置模块什么是Node.jsNode.js®isaJavaScriptruntimebuiltonChrome'sV8JavaScriptengine.Node.js是一个基于ChromeV8引擎的JavaScript运行......
  • React项目中使用装饰器报错
    在初次使用React的装饰器时,第一次在项目中使用@会报错,原因是react默认是不支持装饰器的,所以才会报错,所以是需要做一些配置来支持装饰器。安装插件yarnadd-Drea......
  • 实验任务6
    #include<stdio.h>#include<stdlib.h>intmain(){charcr;FILE*fp;longcount;if((fp=fopen("data4.txt","r"))==NULL){printf("Can'tope......
  • Vue3之readonly 与 shallowReadonly
    readonly与shallowReadonlyreadonly:让一个响应式数据变为只读的(深只读)。shallowReadonly:让一个响应式数据变为只读的(浅只读)。应用场景:不希望数据被修改时。示......
  • MySql-防止注入-2022-12-27
    packagecom.kuang.lesson02;importcom.kuang.lesson02.utils.JdbcUtils;importjava.sql.Connection;importjava.util.Date;importjava.sql.PreparedStatement;import......
  • AcWing. 1165.单词环
    传送门解题思路\(\qquad\)我们一开始可以得出一个建图的思路,对于每个字符串我们把它们当成图中的一个点,然后能“接龙”的字符串之间连一条边,在这张图上跑\(01\)分数规划......
  • JMeter
    ApacheJMeter—压力测试工具一.什么是ApacheJMeterApacheJMeter是Apache组织基于Java开发的压力测试工具,用于对软件做压力测试。JMeter最初被设计用于Web应用测......
  • [oeasy]python0033_任务管理_jobs_切换任务_进程树结构_fg
    查看进程回忆上次内容上次先进程查询​​ps-elf​​查看所有进程信息​​ps-lf​​查看本终端相关进程信息杀死进程​​kill-9PID​​给进程发送死亡信号运行多个......