当前位置: 首页 > news >正文

多 线 程

一.基本知识

线程:线程是操作系统能够运行调度的最小单位

进程:进程是程序执行实体

多线程应用场景:拷贝、迁移大文件,加载大量的资源文件

并发:有多个指令在单个cpu上交替执行

并行:在同一时刻人,有多个指令在多个cpu上同时执行

二.实现方式

1.继承Thread类的方式实现

public class test extends Thread{
    @Override
    public void run() {
        ...
    }
}

2.实现Runnable接口的方式进行实现

public class MyRun implements Runnable{
    @Override
    public void run() {
        ...
    }
}

public class text{
    public static void main(String[] args) {
   MyRun m=new MyRun();
   Thread t=new Thread(m);
    t.start();
    }
}

3.利用Callable接口和Future接口方式实现(能够返回结果值)

public class MyCallable implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        return 0
    }
}

public class text{
    public static void main(String[] args) throws ExecutionException, InterruptedException {
  MyCallable mc = new MyCallable();
  FutureTask<Integer> ft = new FutureTask<>(mc);
  Thread t=new Thread(ft);
    t.start();
    Integer result=ft.get();
    }
}

三.常见的成员方法

1.能够设置和获取线程名字是因为他们都继承于Object类

而且三种方法在实验类中获取线程的名字方式不同

而且方法也需要重写

2.线程的优先级

优先级越高抢到cpu的概率越高(并非一定能强到执行权)

3.守护线程

直接调用方法并且加true即可设置为守护线程

当其他非守护线程执行完毕后,守护线程也会陆续结束

应用场景:聊天时发送文件,发送文件为守护线程

4.出让线程

表示出让当前cpu的执行权

在run中用thread调用

让线程执行尽可能均匀

5.插入线程

在测试类中调用即可

表示把该线程调用到当前线程之前

三.线程的生命周期

相关文章:

  • 单应性矩阵(homography)
  • deepseek实战教程--第七篇DS大模型与AI平台千丝万缕的关系
  • 前端开发中生成网站的favicon.ico文件的软件推荐及使用方法
  • 有效三角形的个数
  • Redis的基础,经典,高级问题解答篇
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分页表格拖拽排序
  • 【洛谷题单】暴力枚举(上)
  • 淳厚的sql注入内功
  • [特殊字符] Hyperlane:Rust 高性能 Web 框架的终极选择 [特殊字符]
  • 新能源动力电池测试设备深度解析:充放电设备与电池模拟器的差异及技术趋势
  • C#从入门到精通(3)
  • 栈-有效的括号
  • 计算机网络八股
  • 第五周日志-重新学汇编(2)
  • dify+vue+java接入大模型流式输出
  • 面试计算机操作系统解析(一中)
  • MySQL 优化利器 SHOW PROFILE 的实现原理
  • IP组播 C++简单应用
  • RSTP快速生成树协议
  • 车架号查询车牌号接口如何用Java对接
  • 英文网站建设方案详细方案/自媒体平台注册官网
  • 爱站网站长工具/如何制作链接推广
  • 兰州做网站企业/学习软件的网站
  • 深圳设计网站建设公司/宁波优化推广选哪家
  • 青岛网站设计企业/百度百科分类方法
  • 洛阳做网站/网站查找工具