四月二十七日java基础知识
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基础知识的更多相关文章
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础知识系列——String
最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- Java 基础知识(一)
Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
随机推荐
- latex常见的错误(自己经常出现的)
1. undifned control consequence 有非法的命令---有可能没有导入对应的宏包.见latex常用的宏包. 2. See the amsmath package docum ...
- vue 数组对象去重
unique(arr) { const res = new Map(); return arr.filter((arr) => !res.has(arr.id) &&am ...
- 弹框table
<template> <div> <el-dialog :title="title" :visible.sync="dialogVisibl ...
- redis和memcached区别总结
1.数据结构:redis支持五种数据结构(字符串,列表,哈希,集合,有序集合),并支持很多相 关计算,例如排序,阻塞等等.支持阻塞队列,锁,线程通信等功能.而memcached只支持kv简单存储 ...
- jsp第7个作业
MailService package mail.service; import java.util.List; import mail.dao.DaoFactory; import mail.d ...
- UDP与TCP ---FundeBug
UDP 面向无连接 首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了.并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作. 具体来说就是: ...
- redis缓存lua脚本过多导致内存占用很多问题
现象 生产某集群各节点已使用内存比较大,在清理了大量业务无用数据后,节点已使用内存却未下降. 排查与分析 通过info memory命令查看,内存碎片率略高,但是对某个主节点新添加的从节点内存使用依然 ...
- Nginx重启操作
1.杀掉Nginx进程 killall nginx 2.启动Nginx /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/ng ...
- 在Win7的64位系统中安装最新版Eclipse或STS
Eclipse版本为:eclipse-jee-2021-12-R-win32-x86_64 STS版本为:sts-4.13.1.RELEASE 这两个版本中都自带了17.0.1的jre插件,默认会使用 ...
- 错误:为仓库 'appstream' 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* sudo sed -i -e &qu ...