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. Array of products

    refer to: https://www.algoexpert.io/questions/Array%20Of%20Products Problem Statement Sample input A ...

  2. python 购物小程序

    要求:  1.启动程序后,让用户输入预算,然后打印商品列表  2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额够不够,够就直接付款,不够就提醒 4.可随时退出,推出时打印已购买商品和余额 ...

  3. centos7 系统运行中做raid磁盘阵列

    插入磁盘 lsblk查看磁盘总体情况 对sdb1等需要做的硬盘进行制作 fdisk /dev/sdb 开始 n 创建 p 给资源回车 重选代码 t 确认磁盘阵列代码 fd 保存w 首先安装工具 mda ...

  4. uni-app中调用高德地图去设置点和轨迹

    盒子部分 <view style="width: 100%; height: 100%" id="busContainer"> </view& ...

  5. 安装win10:我们无法创建新的分区,也无法定位现有分区

    操作环境:win10企业版ISO,U盘安装,UEFI启动 解决思路:win10 UEFI 安装需要硬盘在GPT模式,如果直接创建分区默认的是MBR,所以将磁盘转换成GPT,再分配一个EFI空白分区,就 ...

  6. Code UTF-8 Console GB2312 Linux 中文乱码

    Linux 系统方法:  LD_LIBRARY_PATH=. ./userdemo | iconv -f GB2312 -t utf8 Shell 方法  Shell 编码 改成GB2312 // 编 ...

  7. css3 新增的特性有哪些?

    css3 选择器. css3边框(borders) css3 背景 css3 渐变 css3 文本效果 css3 字体(@font-size规则) css3 转化和变形 1)2D转换方法 2)3D转换 ...

  8. 9.Java的LinkedList/Deque相关方法

    Java的LinkedList/Deque中add/offer/push,remove/pop/poll的区别 它们来自不同的接口 add/remove源自集合,所以添加到队尾,从队头删除: offe ...

  9. 一、ptthon安装

    1.在 Window 平台上安装 Python 的简单步骤,打开 WEB 浏览器访问:www.python.org,选择Downloads 2.然后在该页面选择需要下载的版本, 3.下载完成后直接双击 ...

  10. 惰性载入(函数)-跟JS性能有关的思想

    一.惰性载入概念: 惰性.懒惰.其实跟懒惰没有关系,就是图省事,把没意义的事少做.不做. 惰性载入函数:函数执行时会根据不同的判断分支最终选择合适的方案执行,但这样的分支判断仅会发生一次,后面的其他同 ...