教材知识总结

第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或者false
  • currentThread()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周学习总结的更多相关文章

  1. 20175316盛茂淞-Java第1周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java入门 1.Java简介(地位,特点) 2.安装JDK,设置系统环境 3.编译J ...

  2. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验五 《网络安全与编程》 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验五 <网络安全与编程> 实验报告 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:盛 ...

  3. 20175316盛茂淞 2018-2019-2 《Java程序设计》第9周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第9周学习总结 教材学习内容总结 下载安装MySQL数据库管理系统. 学习<Java程序设计>第十一章MyS ...

  4. 20175316盛茂淞 2018-2019-2 《Java程序设计》第8周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十五章 泛型 -- 主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据 ...

  5. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  6. 20175316盛茂淞 2018-2019-2 《Java程序设计》第7周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第7周学习总结 教材学习内容总结 第八章 常用实用类 一.String类 String类在java.lang包中,jav ...

  7. 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 内部类与异常类 1.使用 try.catch Java中所有信息都会被打包为对 ...

  8. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...

  9. 20175316盛茂淞 2018-2019-2 《Java程序设计》第5周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 接口与实现. 何谓接口 接口:书上没有明确地给出接口的定义,我理解的接口就是一 ...

  10. 20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结

    20175316盛茂淞 2018-2019-2<Java程序设计>第4周学习总结 教材学习内容总结 第五章 子类与继承 一.继承 1.继承定义:避免多个类间重复定义共同行为 2.子类与父类 ...

随机推荐

  1. Jenkins automate workflow

    Now we will build an automate flow from code compiling to product delivery.The essential tools using ...

  2. 【csp模拟赛九】--dfs

    思路: 这道题可以宽搜,深搜,最短路 代码: #include<cstdio> #include<cstring> #include<iostream> #incl ...

  3. QoS in RoCE

    QoS in RoCE 首页分类标签留言关于订阅2018-03-22 | 分类 Network  | 标签 RDMA  RoCE  ECN  PFC Overview TCP/IP协议栈满足不了现代I ...

  4. mac apache 管理

    sudo apachectl start sudo apachectl stop sudo apachectl restart

  5. vue日常学习

    1.$refs可以用来进行父子级间通信.ref被用于作为子组件的索引ID,用以方便的在js中直接访问子组件.用法如下parent.$refs.idname 使用方法: 在父级元素上加上ref属性 &l ...

  6. 由Java正则表达式的灾难性回溯引发的高CPU异常:java.util.regex.Pattern$Loop.match

    问题与分析 某天领导report了一个问题:线上的CPU自从上一个版本迭代后就一直处于居高不下的状况,领导看着这段时间的曲线图判断是有两条线程在不停的死循环. 接到任务后去查看了AWS的CloudWa ...

  7. Hadoop namenode连接journalnode限制导致集群启动失败

    错误1:刚搭建的新集群,启动journalnode以后,格式化namenode节点,出现如下错误 注意其中划红线的地方. 出现这个错误的原因是journalnode节点还没有准备好,而namenode ...

  8. unctf esayrop wp

    目录 题目基本信息 题目漏洞 思路 exp脚本 题目基本信息 题目漏洞 首先在main函数中需要绕过一个if判断才能进入漏洞函数 漏洞函数中很明显的栈溢出漏洞,同时还控制了返回地址不能超过文件映射到内 ...

  9. markdown文件的基本常用编写语法

    .md即markdown文件 1.标题的几种写法: 第一种:     前面带#号,后面带文字,分别表示h1-h6,上图可以看出,只到h6,而且h1下面会有一条横线,注意,#号后面有空格 第二种:   ...

  10. python -- 安装 django

    django-admin startproject 创建的文件名python3/python manage.py startapp 子项目名称python3/python manage.py runs ...