第十周java学习总结

ldc175206 ldc175206     2022-12-07     360

关键词:

第十周java学习总结

学习内容

第12章 Java多线程机制

  • 主要内容

Java中的线程
Thread类与线程的创建
线程的常用方法
线程同步
协调同步的线程
线程联合
GUI线程
计时器线程

  • 重点和难点
    重点:多线程的概念;如何创建多线程
    难点:理解多线程机制

进程与线程
操作系统与进程
程序是一段静态的代码,它是应用软件执行的蓝本。
进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。
现代操作系统可以同时管理一个计算机系统中的多个进程,即可以让计算机系统中的多个进程轮流使用CPU资源。
线程是比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程。
线程间可以共享进程中的某些内存单元(包括代码与数据),线程的中断与恢复可以更加节省系统的开销。

Java的多线程机制
Java语言的一大特性点就是内置对多线程的支持。
Java虚拟机快速地把控制从一个线程切换到另一个线程。这些线程将被轮流执行,使得每个线程都有机会使用CPU资源Java中的线程
主线程(main线程)
每个Java应用程序都有一个缺省的主线程。
当JVM(Java Virtual Machine 虚拟机)加载代码,发现main方法之后,就会启动一个线程,这个线程称为“主线程”(main线程),该线程负责执行main方法。
JVM一直要等到Java应用程序中的所有线程都结束之后,才结束Java应用程序 。
线程的状态与生命周期
建的线程在它的一个完整的生命周期中通常要经历如下的四种状态:
新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。
运行 :线程必须调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。一旦轮到它来享用CPU资源时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了。
中断:有4种原因的中断:
JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。
线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状。
线程使用CPU资源期间,执行了wait()方法。
线程使用CPU资源期间,执行某个操作进入阻塞状态。
死亡 :处于死亡状态的线程不具有继续运行的能力。线程释放了实体。

处于就绪状态的线程首先进入就绪队列排队等候CPU资源,同一时刻在就绪队列中的线程可能有多个。Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。
Java调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。
使用Thread的子类
在Java语言中,用Thread类或子类创建线程对象。
在编写Thread类的子类时,需要重写父类的run()方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为父类的run()方法中没有任何操作语句。

在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的问题作出处理。
在处理线程同步时,要做的第一件事就是要把修改数据的方法用关键字synchronized来修饰。
所谓线程同步就是若干个线程都需要使用一个synchronized修饰的方法。

一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如B.join();
称A在运行期间联合了B。如果线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行。如果A准备联合的B线程已经结束,那么B.join()不会产生任何效果。

当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时会自动启动更多的线程,其中有两个重要的线程:AWT-EventQuecue和AWT-Windows。AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面。JVM要保证各个线程都有使用CPU资源的机会,比如,程序中发生GUI界面事件时,JVM就会将CPU资源切换给AWT-EventQuecue线程,AWT-EventQuecue线程就会来处理这个事件,比如,你单击了程序中的按钮,触发ActionEvent事件,AWT-EventQuecue线程就立刻排队等候执行处理事件的代码

线程是比进程更小的执行单位。一个进程在其执行过程中,可以产生多个线程。
Java虚拟机(JVM)中的线程调度器负责管理线程,在采用时间片的系统中,每个线程都有机会获得CUP的使用权。
理解线程的创建的两种方法。
线程同步是指几个线程都需要调用同一个同步方法(用synchronized修饰的方法)。学会使用wait()方法和notifyAll()方法。

代码上传截图

技术图片

代码链接

代码托管

杨玲201771010133《面向对象程序设计(java)》第十周学习总结(代码片段)

《面向对象程序设计(java)》第十周学习总结第一部分:理论知识学习部分  第八章  泛型程序设计一、泛型程序设计的定义1、JDK5.0中增加的泛型类型,是Java语言中类型安全的一次重要改进。2、泛型:也称参数... 查看详情

201723292017-2018-2《程序设计与数据结构》第十周学习总结

201723292017-2018-2《程序设计与数据结构》第十周学习总结教材学习内容总结第十三章一、集合与数据结构1、集合:是一种对象,类似于保存其他对象的存储库;2、作用:表示一个专用与保存元素的对象,并且该对象还提供增添、... 查看详情

201771010108-韩腊梅-第十周学习总结(代码片段)

第十周总结一、知识总结1.定义简单泛型类  1.1一个泛型类Genericclass就是具有一个或多个类型变量的类  1.2Java中,使用E表示集合的元素类型,K和V表示Map的关键字和值的类型。T(需要时还可以使用临近的U和S)表示... 查看详情

201723272017-2018-2《程序设计与数据结构》第十周学习总结

学号2017-2018-2《程序设计与数据结构》第十周学习总结教材学习内容总结第11章异常-异常处理:1.错误和异常都是对象,代表非正常情况或无效处理。2.常见的异常问题:-试图做除以0的操作。-数组索引越界。-找不到指定的文件... 查看详情

20175306王佳烁第十周学习总结

201753062018-2019-2《Java程序设计》第10周学习总结教材学习内容总结进程:进程是程序的一次动态执行过程,对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程:线程是... 查看详情

201771010112罗松《面向对象程序设计(java)》第十周学习总结(代码片段)

                                 &n 查看详情

201771010134杨其菊《面向对象程序设计java》第十周学习总结(代码片段)

       第8章泛型程序设计学习总结 第一部分:理论知识 主要内容:  什么是泛型程序设计          泛型类的声明及实例化的方法       查看详情

第十周学习总结

#include<stdio.h>#include"C:UsersAdministratorDesktopCTestoutpart1.c"intmain()inta=1,b=2,c;c=add(a,b);PR("%d",c);return0;  #include<stdio.h>#definePRprintfintadd(inta,in 查看详情

孔维滢20171010110《面向对象程序设计(java)》第十周学习总结

理论知识:         1.泛型类的定义,一个泛型类就是具有一个或多个类型变量的类,即创建用类型作为参数的类。如:classGenerics<K,V>;      2.泛型方法,除了泛型类外,... 查看详情

狄慧201771010104《面向对象程序设计(java)》第十周学习总结(代码片段)

实验十 泛型程序设计技术实验时间2018-11-1第一部分:理论知识学习部分(一)、泛型程序设计的定义1、JDK5.0中增加的泛型类型,是Java语言中类型安全的一次重要改进。2、泛型:也称参数化类型(parameterizedtype),就是在定义类、... 查看详情

第十周学习总结

#include<stdio.h>#include"C:UsersAdministratorDesktopCTestoutpart1.c"intmain()inta=1,b=2,c;c=add(a,b);PR("%d",c);return0;  #include<stdio.h>#definePRprintfintadd(inta,intb)intc;c=a+b;returnc;  查看详情

linux学习第十周总结(代码片段)

linux学习第十周总结接着上周的mysql,重点终结日志管理,备份还原,主从复制和mysql集群一、mysql日志管理事务日志transactionlog错误日志errorlog通用日志generallog慢查询日志slowquerylog二进制日志binarylog中继日志releylog1.事务日志事务... 查看详情

20175120彭宇辰《java程序设计》第十周学习总结(代码片段)

教材内容总结十二章Java多线程机制一、进程与线程、操作系统与进程-线程不是进程,是比进程更小的执行单位。但与进程不同的是,线程的中断和恢复可以更加节省系统的开销。-线程可以共享进程中的某些内存单元。-程序是... 查看详情

徐思201771010132《面向对象程序设计(java)》第十周学习总结(代码片段)

一、理论知识部分泛型:也称参数化类型,就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。(如ArrayList类)泛型程序设计(Genericprogramming):编写代码可以被很多不同类型的对象所重用。一个泛型类(gen... 查看详情

201771010128王玉兰《面向对象程序设计(java)》第十周学习总结(代码片段)

第一部分:理论知识部分总结:(1)定义简单泛型类:A:泛型:也称参数化类型(parameterizedtype),就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。B:泛型程序设计(Genericprogramming):编写代码可以被很多不... 查看详情

201771010135杨蓉庆《面对对象程序设计(java)》第十周学习总结(代码片段)

1、实验目的与要求(1) 理解泛型概念;(2) 掌握泛型类的定义与使用;(3) 掌握泛型方法的声明与使用;(4) 掌握泛型接口的定义与实现;(5)了解泛型程序设计,理解其用途。一、理论知识泛型类的定义:(1)泛型:... 查看详情

第十周学习知识总结(代码片段)

一、循环双向链结表插入元素intinsert(DList*L,ElemTypee)Linkcurrent=L->head;Linkprevious=L->tail;LinknewNode;intsize=getSize(*L);intposition=0;if(current==NULL)//Case1:当循环双向链结表为空时。newNode=(Link)malloc(sizeof 查看详情

王艳201771010127《面向对象程序设计(java)》第十周学习总结(代码片段)

一:理论部分。1.泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。1)泛型(参数化类型):在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。如ArrayList类是一个泛型程序设计的实例,可以聚... 查看详情