首页 > 其他分享 >多线程详解

多线程详解

时间:2022-09-27 18:02:21浏览次数:45  
标签:执行 run Thread 调度 详解 线程 多线程

线程简介

任务、进程、线程、多线程
Process进程 Thread线程


线程就是独立的执行路径
在程序运行时,即使没有自己创建线程,后台也会有多个线程,如:主线程,gc线程;
main()称之为主线程,为系统的入口,用于执行整个程序
在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为干预的
对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制
线程会带来额外开销,如CPU调度时间,并发控制开销
每个线程在自己的工作内存交互,内存控制不当会造成数据不一致

线程实现(重点)

继承Thread、实现Runnable(重点)、实现Callable(了解)

创建线程

  • 自定义线程类继承Thread类
  • 重写run()方法,编写线程执行体
  • 创建线程对象,调用start()方法启动线程

案例

package thread.Demo01;

/**
 * 创建线程:
 * 继承Thread类
 * 重写run()方法
 * 调用start开启线程
 * 总结:线程开启不一定立即执行,由CPU调度执行
 */
// 1. 继承Thread类
public class TestThread extends Thread{

    @Override
    public void run() {
        // run方法线程体
        for (int i=0;i<100;i++){
            System.out.println("我在看代码---" + i);
        }
    }
    // 主方法 main线程 主线程
    public static void main(String[] args) {

        // 2.创建线程对象
        TestThread testThread = new TestThread();

        // 3.开启线程 调用start()方法
        testThread.start();


        for (int i=0;i<100;i++){
            System.out.println("我在学习多线程---" + i);
        }
    }
}

线程状态

线程同步(重点)

线程通信问题

高级主题

标签:执行,run,Thread,调度,详解,线程,多线程
From: https://www.cnblogs.com/mmfOnly/p/16734922.html

相关文章

  • JavaScript中Promise详解
    概述Promise(期约)对象用于表示一个异步操作的最终完成(或失败)及其结果值。Promise的使用Promise创建时需传入一个执行器函数(excutor)接受两个参数,第一个参数是内部定......
  • 多线程环境下安全的集合
    多线程环境下安全的集合List/***并发修改异常多个线程同时操作一个不安全的集合*<p>*CopyOnWriteArrayList写时复制技术*add方法会先复制一个新数组对新......
  • HttpServletRequest详解
    链接:https://blog.csdn.net/wwq0813/article/details/90256058链接:https://www.cnblogs.com/wuxu/p/10902132.html ......
  • 详解验证码与打码平台的攻防对抗
    众所周知,验证码的出现是为了区分人和机器,但随着科技的发展,黑产从业者的可图之利增多,验证码的战场也进入了一段破解与抗破解的持久博弈。验证码在逐渐复杂的同时,黑灰产的攻......
  • mysql_config_editor命令详解
    1.为了方便登录数据库查询数据,需要配置mysql登录的快捷方式[root@localhostmysql]#mysql_config_editorset--login-path=db_admin--host=192.168.1.110--user=root......
  • 学习:网络基础知识-Https协议详解
    HTTP协议问题:发送数据都是明文的;如果第三者窃听截取数据包伪装成客户端与服务器进行交互服务器没有认证机制来确定客户端的身份客户端也没有任何机制确认服务器的身份;没......
  • 分布式ID详解(5种分布式ID生成方案)
    分布式架构会涉及到分布式全局唯一ID的生成,今天我就来详解分布式全局唯一ID,以及分布式全局唯一ID的实现方案@mikechen什么是分布式系统唯一ID在复杂分布式系统中,往往需......
  • 线程池底层原理详解与源码分析
    【1】为什么要使用线程池?示例演示://设置业务模拟classMyRunnableimplementsRunnable{privateintcount;publicMyRunnable(intcount){......
  • AGC038C LCMs 详解(莫比乌斯反演好题)
    ProblemAGC038C给定一个长为\(n\)的序列\(A_1,A_2,\cdots,A_n\),求\(\sum_{i=1}^{n}{\sum_{j=i+1}^{n}{lcm(A_i,A_j)}}\bmod998244353\)\(n\leq2\times10^5,A_i......
  • Linux、Windows下Redis的安装即Redis的基本使用详解
    前言什么是RedisRedis是一个基于内存的key-value结构数据库。Redis是互联网技术领域使用最为广泛的存储中间件,它是「RemoteDictionaryService」的首字母缩写,也就......