程序
为完成特定的任务,用某种语言编写的一组指令的集合即一段静态的代码,静态对象
进程
程序的一次执行过程,或是在运行的一个程序是一个动态的过程:有它自身的产生、存在和消亡的过程——生命周期
程序是静态的,进程‘是动态的
进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域
线程
进程可进一步细化为线程,是一个程序内部的一条执行路线
若一个进程同一时间并行执行多个线程,就是支持多线程
线程作为调度和执行的单位,每个线程拥有独立运行的栈和程序计数器线程切换的、开销小
一个进程中的多个线程共享相同的内存空间/内存地址空间->他们从同一堆中分配对象,可以访问相同的变量和对象。这就是进程间通信更简单、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患
单核CPU和多核CPU
单核CPU其实是一种假的多线程因为在一个时间‘单元内,也只能执行一个线程的任务,多核CPU才能更好的发挥多线程的效率
并行和并发
并行:多个CPU同时执行多个任务
并发:一个CPU(采用时间片)同时执行多个任务
多线程的创建
方式一(继承与Thread类)
1.创建一个继承与Thread类的子类
2.重新Thread类的子类run() -->将此线程的‘执行操作声明在run中
3.创建Thread类的子类对象
4.通过此对象调用start();(1.启动当前线程,2调用当前线程的run)

package com.blb.com;
class MyThread extends Thread{public void run(){for(int i=0;i<100;i++){System.out.println(1111);}}
}
public class One {public static void main(String[] args) {myt myt=new myt();myt.start();、、不能通过run方法调用线程for(int i=0;i<10;i++){System.out.println("-------");}}
}

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

线程的调度
调度策略

  • 时间片
  • 抢占式:优先级高的CPU抢占优先级
    java调度方法
    同优先级线程组成先进先出队列(先到先服务),使用时间片
    对于搞优先级,使用优先调度的抢占式策略
    线程优先级

MAX_PRIORITY:10
MIN_PRIORITY: 1
NORM_PRIORITY:5 ---->默认优先级
如何获取和设置当前进程的优先级
getPriority() :获取当前线程的优先级
setPriority(int p):设置当前线程的优先级
说明:高优先级的线程要抢占低优先级线程CPU的执行权。但只是从概率上讲,高优先级的线程高概率的情况下被执行。并不意味着只有高优先级的线程执行完以后,低优先级的线程才执行
创建多线程方式二
创建一个实现Runnable接口的类
实现类去实现Runnbale中的抽象方法:run()
创建实现类的对象
将此对象作为参数传递到Thread类中的构造器,创建Thread类的对象
通过Thread类调用run()方法()(调用当前线程,调用当前线程的run())
两种方式的比较
开发中优先选择实现Runnable接口的方式
原因:1实现的方式没有类的单继承性的局限性
2.实现的方式更合适来出来多个线程有共享数据的情况

java基础之线程参考尚硅谷视频相关推荐

  1. Java web 2022跟学尚硅谷(十) 后端基础 书城

    Java web 2022跟学尚硅谷十 后端基础 书城 验证码kaptcha和缓存cookie 简单了解cookie 步骤 简单创建cookie的样例 代码 CookieServlet01 hello ...

  2. Java基础之线程池

    Java基础之线程池 转载于:https://www.cnblogs.com/daierge/p/10954228.html

  3. Spring框架(基于尚硅谷视频)

    该笔记源于尚硅谷视频对Spring的讲解(适合新手,大佬划走),视频连接如下: https://www.bilibili.com/video/BV1Vf4y127N5?p=27&spm_id_ ...

  4. Java web 2022跟学尚硅谷书城项目完整开源分享

    Java web 2022跟学尚硅谷书城项目完整开源分享 项目介绍 项目类图 sql建表和添加数据 界面展示 用户登录界面 用户注册界面 首页 添加购物车 我的购物车 我的订单 功能说明 项目介绍 跟 ...

  5. 【MySQL入门到高级之基础篇(参考尚硅谷宋红康老师2022版)】

    文章目录 第一章数据库概述 为什么要使用数据库 数据库与数据库管理系统 数据库的相关概念 数据库与数据库管理系统的关系 常见的数据库管理系统排名(DBMS) 常见的数据库介绍 MySQL介绍 概述 M ...

  6. Vue 笔记【视频参考尚硅谷】持续更新2022/3/22...

    Vue 第 1 章:Vue 核心 视频学习地址: https://www.bilibili.com/video/BV1Zy4y1K7SH 学习配套资源(源代码.静态页面等): 链接:https://p ...

  7. Java web 2022跟学尚硅谷(一) 前端基础

    2022版Java web跟学尚硅谷 B/S 软件的结构 HTML的基础标签 基础标签 页面划分标签 frameset iframe 总结 CSS 基本样式介绍 盒子模型 绝对定位与相对定位 页面布局 ...

  8. Docker_尚硅谷视频学习笔记

    文章目录 1 Docker 简介 前提知识+课程定位 Docker 是什么? 问题:为什么会有docker出现 docker理念 总结 能干嘛 之前的虚拟机技术 容器虚拟化技术 开发/运维(DevOp ...

  9. (CZ深入浅出Java基础)线程笔记

    这是刘意老师的JAVA基础教程的笔记 讲的贼好,附上传送门 传智风清扬-超全面的Java基础 一.线程的引入 1.多线程概述 进程 a.正在运行的程序,是系统进行资源分类和调用的独立单位. b.每个进 ...

  10. JavaSE(尚硅谷视频学习笔记)

    文章目录 Java基础编程 Java语言概述 Java语言简述 1.基础图解 2.常识 3.计算机语言的发展迭代 4.Java语言版本迭代概述 5. Java语言应用的领域 6.Java语言的特点 开 ...

最新文章

  1. html col居中无效,html中col标签中的汉字如何居中?html col标签的基本使用(内有实例)...
  2. 郑州网络推广教你如何“悄悄”做网站SEO,惊艳竞争对手?
  3. CSS+DIV固定底部的漂浮导航条(多浏览器兼容)
  4. 1、spring+quartz关闭Tomcat出现异常
  5. 【机器学习】机器学习视角下的因果推断
  6. boost::fibers::future用法的测试程序
  7. python (八)迭代器、生成器、列表推导式
  8. oneplus 手机kali linux,OnePlus 2(一加2)刷入Kali Nethunter教程
  9. ASP.NET Core MVC 源码学习:MVC 启动流程详解
  10. linux下yum安装pgsql,CentOS7使用yum安装PostgreSQL和PostGIS的方法
  11. java安全 ——JAAS(Java 认证和授权服务)开发指南
  12. Ubuntu 10.04正式发布
  13. 《构建之法》阅读笔记(三)
  14. 简易计算器--带小数点--单片机课程设计
  15. 扩展欧几里得模板+例题
  16. 十年股市投资回顾与反思
  17. 共轭(conjugate)
  18. linux环境查看cpu是否开启睿频
  19. 大一作业HTML网页作业:中华传统文化题材网页设计(纯html+css实现)
  20. ubuntu20.04关闭内核自动更新

热门文章

  1. 算法-第四版-练习1.2.3解答
  2. App Store审核标准
  3. hadoop环境搭建总结
  4. 内核调试技巧-逆向寻踪,揭开 LACP 协议流程的神秘面纱
  5. 前照灯检测仪_前照灯检测仪
  6. 如何搭建一个好的测试环境
  7. 恩智浦智能车大赛----笔记
  8. 游戏开发中常见的10种编程语言
  9. halcon手眼标定
  10. matlab中indo是什么意思,Matlab软件电力系统仿真应用简介