20175316盛茂淞 2018-2019-2 《Java程序设计》第10周学习总结
教材知识总结
第12章 Java多线程机制
进程与线程
- 进程是程序的一次动态执行进程,它对应了从代码加载、执行至执行完毕的一个完整过程
- 线程不是进程,一个进程在其执行过程中,会产生多个线程,线程间可以共享进程中的代码和数据。
- 没有进程就没有线程
多线程
- 多线程是指一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况。
- 计算机只能执行多个线程中的一个,java虚拟机快速的把控制从一个线程切换至另一个线程。
- JVM一直要等到java应用程序中的所有线程都结束,才结束java应用程序
线程的状态与生命周期
- 新建:当一个Thread类或者其子类的对象被声明并创建时,线程对象处于新建状态,有了相应的内存空间和其他资源
- 运行:调用
start()方法进行排队,调用run()方法立刻执行 - 中断
- 死亡:一个正常运行的线程正常完成了他的全部工作或者被提前强制性终止、
java中的线程调度器负责管理线程,线程的优先级通过`setPriority(int grade)方法调整。
Thread类及其子类与线程的创建
- 编写Thread类的子类时,需要重写
run()方法 - Thread创建线程通常使用构造方法:
Thread(Runnable target)
目标对象与线程的关系
- 目标对象和线程完全解耦:目标对象通常需要获得线程的名字
String name = Thread.currentThread().getName(); - 目标对象组合线程(弱耦合):目标对象通常需要获得线程的引用
Thread.currentThread();
线程的常用方法
start()run()sleep(int millsecond)参数millsecond是以毫秒为单位的休眠时间,如果线程在休眠时被打断,JVM就会抛出InterruptedException异常isAlive()返回true或者falsecurrentThread()Thread类中的类方法,可以用类名调用interrupt()吵醒休眠的线程
线程同步
- 线程同步:若干个线程都需要使用一个synchronized方法
- 线程同步机制:当一个线程A使用同步方法时,其他线程想使用这个同步方法时就必须等待
线程联合B.join();
- 计时器线程
Timer(int a,Object b)创建一个计时器 - 守护线程
thread.setDaemon(true)可以将自己设置成一个守护线程
教材学习中遇到的问题
问题一
- 问题:多个线程抢cpu,该怎么决定谁先谁后?
解决方案:因为线程的优先级只有1,5,10.当没有设置优先级的时候,默认优先级为5。所以是随机的,但是我们可以控制
问题二
- 问题:如何实现多线程并发执行?
解决方案:当机器有多个CPU,JVM就能充分利用它,实现并发执行
代码调试过程中遇到的问题
- 问题1:在敲自己编的代码时,提示java.lang.ArrayIndexOutOfBoundsException
- 问题1解决方案:出现该问题是因为数组出现了越界。经过检查后发现我在程序中访问了一个大于数组长度的位置
代码托管
https://gitee.com/shengmaosong/java-besti-20175316/tree/master/src
学习感受
本周给自己打分:70分!仍需继续努力!
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第十周 | 2800/3000 | 40/50 | 360/400 |
20175316盛茂淞 2018-2019-2 《Java程序设计》第10周学习总结的更多相关文章
- 20175316盛茂淞-Java第1周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java入门 1.Java简介(地位,特点) 2.安装JDK,设置系统环境 3.编译J ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验五 《网络安全与编程》 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验五 <网络安全与编程> 实验报告 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:盛 ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第9周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第9周学习总结 教材学习内容总结 下载安装MySQL数据库管理系统. 学习<Java程序设计>第十一章MyS ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第8周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十五章 泛型 -- 主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第7周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第7周学习总结 教材学习内容总结 第八章 常用实用类 一.String类 String类在java.lang包中,jav ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 内部类与异常类 1.使用 try.catch Java中所有信息都会被打包为对 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第5周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 接口与实现. 何谓接口 接口:书上没有明确地给出接口的定义,我理解的接口就是一 ...
- 20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结
20175316盛茂淞 2018-2019-2<Java程序设计>第4周学习总结 教材学习内容总结 第五章 子类与继承 一.继承 1.继承定义:避免多个类间重复定义共同行为 2.子类与父类 ...
随机推荐
- Array.prototype.xxx.call()处理字符串的疑惑
看你不知道的JavaScript中卷 2.1数组时有个疑问.具体是这样的: 通过“借用”数组的方法可以很方便的处理字符串.可以“借用”数组的非变更方法,但不能“借用”数组的可变更方法. 用代码来描述就 ...
- 2019暑期金华集训 Day2 线性代数
自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对 ...
- spark2.1.0的源码编译
本文介绍spark2.1.0的源码编译 1.编译环境: Jdk1.8或以上 Hadoop2.7.3 Scala2.10.4 必要条件: Maven 3.3.9或以上(重要) 点这里下载 http:// ...
- Ubuntu16.04 apache2+php7.0+mysql5.7环境搭建
今天配置一下web环境,很常见的apache+php+mysql的网站环境: 步骤一:安装apache sudo apt install apache2 步骤二:安装php7 1.安装PHP7和响应的 ...
- 记一次ArrayList产生的线上OOM问题
前言:本以为(OutOfMemoryError)OOM问题会离我们很远,但在一次生产上线灰度的过程中就出现了Java.Lang.OutOfMemoryError:Java heap space异常,通 ...
- git前期准备
git小结 设置用户名 git config –global user.name 'itcast' 设置用户名邮箱 git config –global user.email 'itcast' 查看设 ...
- [mcI18N]mcI18N项目简介
mcI18N项目全称为我的世界模组本地化工具链项目(Minecraft Mod Localization Toolchain Project),是一个为我的世界模组本地化过程提供工具/平台支持的项目. ...
- <IDE>vscode前端常用插件推荐,搭建JQuery、Vue等开发环境
vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscode重新定义(redefined)了代码编辑器.当前市面上常用的轻型代码编辑器主要是:sublime,notepad++,edit ...
- leetcode 55. Jump Game、45. Jump Game II(贪心)
55. Jump Game 第一种方法: 只要找到一个方式可以到达,那当前位置就是可以到达的,所以可以break class Solution { public: bool canJump(vecto ...
- Centos7.4服务器安装Laravel5.7详细讲解(2018-10-27)
一.在阿里云或者腾讯云选择Centos7并购买服务器 二.安装宝塔面板和php运行环境 1.输入命令 yum install -y wget && wget -O install.sh ...