1.多线程的主要目的是讲一个程序中的各个“程序段”并发化
2.并行执行通常表示为同一时刻有多个代码在处理器上执行
3.并发执行通常表示为在单个处理器上,同一时刻只执行一个代码,但在一个时间段内
,这些代码交替执行
4.单线程即是一个程序只有从头到尾的一条执行路径
5.多线程编程的含义就是可将一个程序分成几个可以同时并发执行的子任务
6.程序是含有指令和数据的文件,被存储在次哦按或者其他的数据存储设备,
也就是说程序是静态的代码
7.进程是程序的一次执行过程,是系统运用程序的基本单位,因此进程是动态的
8.多任务是指一个系统中可以同时运行多个进程,即有多个独立运行的任务,每一个任务
对应一个进程
9.一个 进程包含一个以上线程,一个进程中的线程只能使用该进程的资源和环境
10.线程不能独立存在,只能存在于进程中。由于同类的多个线程是共享同一块内存空间和
一组系统资源,线程也被称为负担轻的进程
11.线程和进程最大的不同是各进程是独立的,而各线程则不一定,因为同一进程的线程
极有可能互相影响
12.多任务是针对操作系统而言的,表示操作系统可以同时运行多个程序,
多线程是针对一个进程而言的,表示一个进程内部可以同时执行多个线程
13.线程的状态和生命周期:
1)新建状态(newborn):当一个Thread类和他的子类的对象被声明并创建,但还未被执行
的这段时间里,处于一种特殊的新建状态
2)就绪状态(rannable):也被称为可运行状态。处于新建状态的先陈如桂被启动后,将进入
线程队列排队等待CPU资源,此时它已具备了运行的条件,也就是处于就绪状态
3)执行状态(running):当就绪状态的线程被调用并获得CPU资源时,便进入该状态
处于执行状态的线程在下列情况下回让出CPU的控制权
1.线程执行完毕
2.有比当前线程优先级更高的线程处于就绪状态
3.线程主动休眠一段时间
4.线程在等待某一资源
4)阻塞状态(blocked):以这个正在执行的线程如果在某些特殊情况下,将让出CPU并
暂时中止自己的执行,线程处于这种不可执行的状态
下面几种情况使一个线程进入阻塞状态:
1)调用sleep()方法或yield()方法
2) 为等待一个条件变量,线程调用wait()方法
3)该线程与另外一个线程join在一起
5)消亡状态(dead):处于消亡状态的线程不具备继续执行的能力
导致线程消亡的原因:
一是正常运行的线程完成了它的全部工作,即执行完了run()方法的最后一条语句并退出
二是进程因故停止运行 ,该进程中的所有线程将被强行停止
14.线程的优先级与调度:
优先级决定了被CPU执行的优先顺序
java语言中的线程的优先级从低到高分为十级。Thread来有三个关于线程优先级的静态变量
MIN_PRIORITY、表示最小优先级,通常为1;MAX_PRIORITY表示最高优先级,通常为10
NORM _PRIORITY表示普通优先级
15.1)新建线程将继承创建它的父进程的优先级。父进程是指执行创建新线程对象语句所在的线程
,它可能是程序的主线程,也可能是某一个用户自定义的线程
2) 一般情况下,主线程具有普通优先级。
另外想改变线程的优先级,可以通过调用线程对象的setPriority()方法进行设置
16.调度:是指各个线程之间分配CPU资源
线程调度有两种模式:分时模式和抢占模式
java语言支持的就是抢占模式
17.Java的Thread线程类与Runnable接口
java中实现多线程的方法有两种:一种是继承java.lang。包中的Thread类,
另一种是呀用户在定义自己的类中实现Runnable接口
18.要在一个Thread的子类中激活线程,必须做好下列两件事
1)此类必须继承Thread类
2)线程所要执行的代码写在run()方法内
19.线程执行时,从它的run()方法开始执行。run()方法是线程执行的起点,就像main()
方法时应用程序的执行起点,init()方法是小程序的执行起点一样
20.一个类激活线程,必须使用下列语法编写:
class 类名 extends Thread //从Thread类派生子类
{
类里的成员变量;
类里的成员方法;
修饰符 run() //覆盖父类Thread里的run()方法
{
线程的代码 }
}
21.注意:run方法规定了线程要执行的任务,但一般也不是直接调用run()方法,而是通过
线程的start()方法来启动线程

总结:今天学习了多线程里面的基础概念,程序,进程,线程,多任务,多线程

并行执行,并发执行

线程的五种状态的概念,以及在什么情况下是这种状态

线程的三种优先级

调度的两种模式

实现多线程的两种方法,继承Thread类,自己类定义Runnable接口

四月二十七日java基础知识的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  3. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  4. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  7. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  8. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

  9. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  10. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. JS Math与一些原始类型

    镇楼图 Pixiv:DSマイル 一.值属性.函数 globalThis JS有全局对象,但是在不同环境中全局对象均不同.在Web环境中,window.self.frames取得全局对象,在Web Wo ...

  2. MD5加密汇总

    1 #region MD5 2 /// <summary> 3 /// 16位MD5加密 4 /// </summary> 5 /// <param name=" ...

  3. python题mhy

    def save(s): f=open("test.txt","wt") f.write(s["name"]+"\n") ...

  4. WEB应用中配置和使用springIOC容器是成功的

    Sring web应用学习(1)https://www.cnblogs.com/xiximayou/p/12172667.html

  5. Vue修改

    今天做的是一个Vue的修改操作: Vue主要是用来做视图来显示数据的,理解起来的话可能比较困难,学了好几天了,才刚摸到一点头绪,还是需要努力

  6. 十大经典排序之桶排序(C++实现)

    桶排序 桶排序是计数排序的升级版.它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定 思路: 根据数据规模,初始化合理桶数 将数列中的数据按照桶的规模进行映射,尽量保证数据被均匀的分布到桶 ...

  7. 【Win11】电脑开机内存占用过高

    联想拯救者 Y7000P 1.Win+R打开运行输入"MdSched"   重启 2.Windows PowerShell(管理员)->并运行该命令 Disable-MMAg ...

  8. 三种遍历的方法(map和forEach的区别)

    一. for循环 arr[index]可以改变原数组 二. forEach方法 forEach方法的返回值是一个undefined: 2. 在循环体内改变item的值不会影响原数组,而是只在循环体内生 ...

  9. subplots函数使用说明

    1.函数的功能 创建一个画布对象和一组子图对象. 2.函数的声明 fig, axs = subplots(nrows=1, ncols=1, sharex=False, sharey=False, s ...

  10. 第二章启动引导器GRUB2

    第二章启动引导器GRUB2grub的配置文件路径:vim /boot/grub2/grub.cfg (不建议直接编辑)vim /etc/default/grub (可编辑的文件)将编辑的操作刷新到/b ...