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. python安装install

    pip3 install pyinstaller -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.comp ...

  2. EF调用sql语句

    1.连接数据库 2.在Dal进行调用sql语句 public List<UserInfo> PageShow(out int totalcount,out int totalpage, s ...

  3. Q:windows系统如何开机启动批处理脚本

    方法1 1.win+r输入gpedit.msc进入本地策略管理器 2.点击windows设置下的脚本(启动/关机),然后双击启动. 3.点击添加,然后点击浏览,选择批处理文件然后点击确定. 方法2 也 ...

  4. golang sync.Once用法

    sync.Once能确保实例化对象Do方法在多线程环境只运行一次,内部通过互斥锁实现 Do方法 Once类型的Do方法只接收一个参数,参数的类型必须是func(),即无参数无返回的函数.该方法的功能并 ...

  5. Manage your references to .Net assemblies Dynamics 365 for Operations VS projects

    (Dynamics 365 for Operations was previously known as the New Dynamics AX) Dynamics 365 for Operation ...

  6. CSS3之伸缩布局

    一 主轴方向 在伸缩布局中, 默认伸缩项是从左至右的排版的 主轴的排版的方向默认就是row, 默认就是从左至右 1.默认情况下主轴是水平方向的, 但是也可以修改为垂直方向.只要看到flex-direc ...

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

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

  8. 切片slice

    1.切片 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用类型的机制 切片的使用和数组类似,如遍历切片,访问切片的元素和求切片长度len(slice)都一样. 切片的长度是可以变化的, ...

  9. Linux 系统设置

    ubuntu下使用PageUp/PageDown快速翻出历史命令 #vim/etc/inputrc 解除两行注视后重启终端 "\e[5~": history-search-back ...

  10. Rust for Rustaceans: Idomatic Programming for Experienced Developers Chap.2 Types

    翻译的内容如果有不理解的地方或者是其他的差错,欢迎后台回复讨论. 类型在内存中的表示 Rust中的每一个值都有自己的类型(Type).在这一章中,我们将会看到Rust中的类型服务于许多不同的目的,但其 ...