学号 20165324 《Java程序设计》第八周学习总结

教材学习内容总结

第十二章 Java多线程机制

进程与线程

进程是程序的一次动态执行过程;线程是比进程更小的执行单位

线程的状态与生命周期

  • Java语言使用Thread类及其子类的对象来表示线程,完整的生命周期要经历一下状态:

    1. 新建
    2. 运行:必须调用start()方法通知JVM才会运行
    3. 中断: 四种原因中断
    4. 死亡:原因有二,一为正常运行结束;二为线程被强制提前结束,即强制run()方法结束。

线程调度与优先级

  • Java虚拟机中的线程调度器负责管理线程,优先级分为10个级别,分别用Thread类中的类常量表示。优先级可以通过setPriority(int grade)方法调整,getPriority方法返回线程的优先级。
  • JVM的线程调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。

Thread类与线程的创建

  • 使用Thread的子类:编写Thread类的子类时,需要重写父类的run()方法,规范线程的具体操作。
  • 使用Thread类:构造方法为Thread(Runnable target),该构造方法中的参数为一个Runnable类型的接口。

使用Runnable接口比使用Thread类的子类更具有灵活性

  • 如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。

目标对象与线程的关系

  • 目标对象与线程完全解耦
  • 目标对象组合线程(弱耦合)

关于run方法启动的次数

线程的常用方法

  • start(),调用方法启动线程,使其进入就绪队列排队
  • run(),用来定义线程对象被调度之后所执行的操作
  • sleep(int millsecond),调用方法使其放弃CPU资源,休眠。必须在try-catch语句中调用sleep()方法。
  • isAlive(),线程处于新建状态时,线程调用isAlive()方法返回false。
  • currenThread()方法为Thread的类方法,可以用类名调用,返回当前正在使用CPU资源的线程。
  • interrupt(),调用该方法可结束休眠,重新排队等待CPU资源。

线程同步

  • 概念:程序中若干个线程都需要使用一个方法,而这个方法用synchronized(同步)给予了修饰。多个线程调用该方法必须遵守同步机制。

协调同步的线程

  • 同步方法中使用wait()方法,中断线程的执行。
  • 同步方法中使用notify()方法,通知所有由于使用这个同步方法而处于等待的线程结束等待。
  • wait(),notify(),notifyAll()都是Object类中的final方法

线程联合

  • 一个线程A在占有CPU资源期间,可以让其他线程调用join()和本线程联合如:B.join();

GUI线程

  • 当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时,会自动启动更多的线程,其中有两个重要的线程:AWT-EventQuecueAWT-Windows,前一个负责GUI事件,后一个线程负责将窗体或组件绘制到桌面。

计时器线程

守护线程

  • 一个线程可以调用void setDaemon(boolean on)方法,设置为一个守护线程。

教材学习中的问题和解决过程

代码调试中的问题和解决过程

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 203/203 4/4 15/15
第二周 326/529 2/6 12/27
第三周 1000/1500 2/8 20/47
第四周 800/2300 3/11 20/67
第五周 500/2800 2/13 18/85
第六周 900/3700 2/15 15/100
第七周 1100/4800 3/18 15/115
第八周 1700/6500 1/19 18/133

参考资料

20165324 《Java程序设计》第八周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第八周学习总结

    1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...

  2. 20165324 《Java程序设计》第九周学习总结

    学号 20165324 <Java程序设计>第九周学习总结 教材学习内容总结 第十三章 Java网络编程 URL类 使用URL创建对象的应用程序称为客户端 一个URL对象封装一个具体资源的 ...

  3. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  8. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  9. 20145237 《Java程序设计》第九周学习总结

    20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...

  10. 20175209 《Java程序设计》第九周学习总结

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

随机推荐

  1. 【BZOJ】1058: [ZJOI2007]报表统计(splay+set)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1058 当复习一下splay.... 做法很简单..... 观察得知每一次插入一个点只需要维护前后的绝 ...

  2. Apache里的httpd-vhosts.conf详解

    首先看下面的配置: <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "D ...

  3. 模板,BFS

    #include <stdio.h> #include <string.h> #include <queue> using namespace std; struc ...

  4. WPF进阶之接口(4):ICommand实现详解

    上一章WPF进阶之接口():INotifyPropertyChanged,ICommand中我们遗留了几个问题,我将在本节中做出解释.在详细解释ICommand实现之前,我们现在关注一下什么是:弱引用 ...

  5. ios 开发之 -- UILabel的text竖行显示

    让UILabel的内容竖行显示,我经常用一下两种方式: 第一种:使用换行符 \n label.text = @"请\n竖\n直\n方\n向\n排\n列"; label.number ...

  6. iOS开发之 -- NSStringFromSelector的使用

    很多时候,我们要触发一个时间,需要设置点击时间,当然了,有很多,比如:按钮,手势,tableview和其他一些空间自带的点击方法, 还有一个就是NSStringFromSelector的使用,废话不多 ...

  7. [分享] 关于App Store下载到一半发生错误的问题 [复制链接]

    问题:昨天发现Pages无法更新,结果卸载在App Store里重新下载.下载到快结束的时候,提示“发生错误”,同时提示“在‘已购’中再试一次”.结果在已购中,Pages显示的是安装按钮,点击安装,显 ...

  8. 电力项目十四--js添加highslider特效

    当页面的一个table表格无法显示所有的内容的时候,点击[查看详细信息],显示详细内容: 下载css,js 1.在actingIndex.jsp中添加:引入js和css: <LINK href= ...

  9. rabbitmq 用户管理

    rabbitmqctl add_user root cor2016 rabbitmqctl set_user_tags root administrator http://host:15672/#/u ...

  10. 160229-01、web页面常用功能js实现

    web页面常用功能js实现   1.网页未加载时弹出新窗口 <body onunload="window.open('http://www.a68.cn');">< ...