201621123080《Java程序设计》第十一周学习总结

201621123080《Java程序设计》第十一周学习总结

1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容。

1098476-20171202210559210-328778506.png

2. 书面作业

本次PTA作业题集多线程

1. 源代码阅读:多线程程序BounceThread

1.1 BallRunnable类有什么用?为什么代码中需要调用Thread.sleep进行休眠?

实现Runnable接口;
休眠让其他线程执行,减少CPU占用的时间

1098476-20171202210635351-1886136366.png

1.2 Ball.java只做了两件事,这两件事分别是什么?BallComponent对象是干什么的?其内部的ArrayList有什么用?程序运行过程中,生成了几个BallComponent对象?该程序使用了多线程技术,每个小球是分别在不同的线程中进行绘制吗?

小球的移动,获得小球的x,y坐标;添加小球,并在画面上显示;
存放小球;生成一个BallComponent对象;在不同线程执行

2. 实验总结:题集(多线程)

2.1 题目:Thread、PrintTask、Runnable与匿名内部类。

并回答:a)通过定义Runnable接口的实现类来实现多线程程序比通过继承自Thread类实现多线程程序有何好处?b) 6-1,6-3,6-11实验总结。
a)实现Runnable接口可以一个任务多个线程执行,继承只能继承一个类有很大的局限。

b)
6-2 继承Thread类即可;
6-3 的Runnable 要 new 否则会提示静态资源无法访问动态资源;
6-11 实现runnable接口

2.2 使用Lambda表达式改写6-3

改写的代码如下:

public class Main {public static void main(String[] args) {final String mainThreadName = Thread.currentThread().getName();Thread t1 = new Thread();Runnable runnable = ()->{System.out.println(mainThreadName);System.out.println(t1.getClass().getInterfaces());System.out.println(Arrays.toString(t1.getClass().getInterfaces()));};new Thread(runnable).start();}
}

2.3 题目:6-2(Runnable与停止线程)。回答:需要怎样才能正确地停止一个运行中的线程?

暴力方法stop,但不推荐;
用 while(flag) ,通过改变flag的值来使循环结束从而结束这个线程;
6-2 忘记判断空耽误了时间

1098476-20171202210915726-1043315937.png

3. 互斥访问

3.1 修改TestUnSynchronizedThread.java源代码使其可以同步访问。(关键代码截图,需出现学号)

1098476-20171202210749069-218247670.png

4. 互斥访问与同步访问

完成题集6-4(互斥访问)与6-5(同步访问)

4.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法可以使用synchronized实现互斥同步访问,使用代码说明(请出现相关代码及学号)?

同步代码块;

1098476-20171202210803976-896402528.png

4.2 同步代码块与同步方法有何区别?

同步方法是方法名用synchronized修饰;
同步代码块只在内部使用synchonrized加锁,范围小;

4.3 实现互斥访问的原理是什么?请使用对象锁概念并结合相应的代码块进行说明。当程序执行synchronized同步代码块或者同步方法时,线程的状态是怎么变化的?

有锁的线程执行,其余的线程无法打扰,且在Lock Pool等待锁的释放;
无锁线程进入Look Pool状态,等待锁被释放。锁释放后,线程进入Runnable状态,线程执行完毕释放锁。如此循环。

4.4 Java多线程中使用什么关键字实现线程之间的通信,进而实现线程的协同工作?

用等wait,通知notify,互斥synchronized实现线程之间的通信;

5. 线程间的合作:生产者消费者问题

5.1 运行MyProducerConsumerTest.java。正常运行结果应该是仓库还剩0个货物。多运行几次,观察结果,并回答:结果正常吗?哪里不正常?为什么?

运行结果是混乱的,反复出现无货、已满;
线程处理数据的速度不同,导致混乱;

5.2 使用synchronized, wait, notify解决该问题(关键代码截图,需出现学号)

1098476-20171202210937710-1475486679.png

6. 面向对象设计作业-图书馆管理系统

6.1 系统的功能模块表格,表格中体现出每个模块的负责人。

负责人功能
Main朱汇盈控制程序
User、BookInfo刘思远用户信息、图书信息
BookList陈剑波书库管理

6.2 运行视频

1098476-20171202210953366-947357115.gif

1098476-20171202210959772-117458339.gif

6.3 讲解自己负责的模块,并粘贴自己负责模块的关键代码(出现学号及姓名)。

所有图书存储在 list里:
private static ArrayList<BookInfo> list = new ArrayList<BookInfo>();

//按书号、名称查找
public static int searchNo(long no) 
public static int[] searchNameAll(String name)
//借书和还书
public static boolean borrow(long no,long boNo)
public static void returnBook(long no,long boNo)
//删除、添加、修改书籍
public static void del(long no)
public static void add(String name,long no,String author,boolean isBorrow,long boNo) 
public static void changeList(String name,long no,String author,boolean isBorrow,long boNo) 
//显示书籍
public static void show()
public static BookInfo getOne(int po)

1098476-20171202211009476-1949776978.png

1098476-20171202211013772-1560804436.png

3.码云及PTA

题目集:多线程

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
必须出现几个要素:提交日期-用户名(姓名与学号)-不提交说明

1098476-20171202211034616-491582585.png

3.2 截图"多线程"PTA提交列表

需要有两张图(1. 排名图。2.PTA提交列表图)

1098476-20171202211049647-913108284.png

1098476-20171202211054616-1718786744.png

3.3 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中。

周次总代码量新增代码量总文件数新增文件数
10000
20000
34724721111
44720110
5468-4121
610435753018
7241713745121
8512927128332
95284155896
105714430989
1159952811057
1263653701149

1098476-20171202211427476-1185733950.png

转载于:https://www.cnblogs.com/boxker/p/7955495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unix/Linux环境C编程入门教程(27) 内存那些事儿

calloc() free() getpagesize() malloc() mmap() munmap()函数介绍calloc&#xff08;配置内存空间&#xff09; 相关函数 malloc&#xff0c;free&#xff0c;realloc&#xff0c;brk表头文件 #include <stdlib.h>定义函数 void *calloc(size_t nmemb&#xff0c;size_t…

Fix an “Unapproved Caller” SecurityAgent Message in Mac OS X

上午一进公司就被日本分公司的美女呼叫&#xff0c;说mac硬盘加密经常开机后需要输入硬盘加密密码才可以登录&#xff0c;我想应该是硬盘加密后没有给用户添加许可证&#xff0c;所以每次登录系统都要进行验证。于是远程到用户电脑上后&#xff0c;准备在硬盘加密的设置里添加用…

ue 清理缓存_【PM项目管理系统】PM安装更新客户端、删除UE及清理IE缓存操作手册...

第 1 页 共 9 页 PM 安装更新客户端、删除UE 及清理IE 缓存操作手册1、登录地址⑴登陆地址http://www.doczj.com/doc/45b822bf0c22590103029d30.html⑵安装或更新客户端安装客户端如果之前电脑上没有安装过客户端&#xff0c;需要下载并安装客户端。 打开IE 浏览器&#xff0c;…

Golang 交叉编译

各平台的GOOS和GOARCH参考 OS ARCH OS version linux 386 / amd64 / arm > Linux 2.6 darwin 386 / amd64 OS X (Snow Leopard Lion) freebsd 386 / amd64 > FreeBSD 7 windows 386 / amd64 > Windows 2000 $ cd /usr/local/go/src $ sudo CGO_ENABLED0 GOOSlinux GO…

java map 随机取值_随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value...

利用Java提供的Random类。从List或Set中随机取出一个元素&#xff0c;从Map中随机获取一个key或value。因为Set没有提供get(int index)方法&#xff0c;仅仅能先获取一个随机数后。利用一个计数器&#xff0c;对Set进行循环&#xff0c;当计数器等于随机数时返回当前元素&#…

这绝对是有史以来最详细的web前端学习路线

定要善用开发者工具。firefox的firebug和Chrome的F12都是很好的选择&#xff0c;用好了这个必会发现他带给你的帮助比看一本书更多。你把firebug摸透了你还担心对DOM理解不够&#xff1f;考虑到未来&#xff0c;html5和css3是必须学习的。看这篇总结的最全学习资料&#xff0c;…

cocos2d 走动椭圆

1.效果图艺术与规划说他想与我合作在全国率先主角光环加&#xff0c;椭圆形走动。cocos2d自带没有&#xff0c;參考网上的写了一个。2.椭圆数学知识有关椭圆的数学知识我已经忘光了。网上找了点资料&#xff1a;a是椭圆的长半轴&#xff0c;b是椭圆的短半轴。o是角度&#xff0…

java nashorn maven_使用mvn创建java工程的极简教程

最近开始集中精力搞java的开源项目&#xff0c;在这时记录一下使用mvn创建java工程的比较简单的流程&#xff0c;以备不时之需&#xff0c;适用于我等java小白~~~使用mvn创建java工程安装mvn创建java工程命令行执行mvn archetype:generate -DgroupIdcom.mytest -DartifactIdtes…

2014.7.22

技术&#xff1a; FUSE (FileSystem in UserSpace) http://zh.wikipedia.org/wiki/FUSE VFS(Virtual File System) http://baike.baidu.com/view/1149177.htm?fraladdin mogileFS,mooseFS,glusterFS,lustre,NFS http://blog.163.com/023_dns/blog/static/11872736620121017110…

深度学习中用来训练的train.py 探究学习2.0( 数据预处理)

数据预处理 下列代码为train.py中常见的一些数据处理方法 train_transform transforms.Compose([transforms.Resize((224, 224)),transforms.RandomVerticalFlip(),# 随机旋转&#xff0c;-45度到45度之间随机选transforms.RandomRotation(45),# 从中心开始裁剪transforms.C…

go语言入门(三)

条件语句 go语言的条件语句结构如下&#xff1a; go语言的条件语句和其他语言类似。简单列举下&#xff1a; 1、if 语句&#xff0c;布尔表达式不需要括号 if 布尔表达式 {   /* 在布尔表达式为 true 时执行 */   } 2、if...else语句 if 布尔表达式 { /* 在布尔表达式为 tr…

HDU 1950 Bridging signals

那么一大篇的题目描述还真是吓人。 仔细一读其实就是一个LIS&#xff0c;还无任何变形。 刚刚学会了个二分优化的DP&#xff0c;1A无压力。 1 //#define LOCAL2 #include <iostream>3 #include <cstdio>4 #include <cstring>5 using namespace std;6 7 const…

docker版本包 乌班图_Ubuntu安装Docker方式一:软件包安装

0.卸载旧版本Docker安装前需要先卸载老版本的Docker。sudo apt-get remove docker docker-engine docker.io containerd runc注意&#xff1a;这种方式每次升级都需要下载一个新的软件包。1.下载安装包去https://download.docker.com/linux/ubuntu/dists/选择你的Ubuntu版本&am…

1.8暂停线程

在java中&#xff0c;使用suspend()方法暂停线程&#xff0c;使用resume()方法恢复线程的执行。 1.8.1suspend与resume的使用&#xff1a; 线程代码&#xff1a; public class Thread1 extends Thread {private long i 0L;public long getI() {return i;}public void setI(lon…

map的用法

/* ACM中map的基本的用法&#xff0c;主要是用数组的形式实现。 1.构造map 2.数据插入 3.map的大小 4.数据的查找 5.数据的删除 */ #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<map> using namespace std…

iOS UI 18 数据库

// // RootViewController.m // Ui - 18 数据库 // // Created by dllo on 15/12/2. // Copyright (c) 2015年 dllo. All rights reserved. // #import "RootViewController.h" #import "DataBasehandle.h" #import "Student.h" interface …

ducker桌面版更改安装位置_Ubuntu 16.04 安装 Docker和默认存储路径修改

docker的安装并不复杂&#xff0c;网上有很多可参考的教程&#xff0c;这里记录下我的安装步骤和docker 镜像存储路径的配置方法&#xff0c;仅供参考。一、安装dockerStep1&#xff1a;检查安装环境是否满足docker安装要求检查kernel内核是否在3.10以上&#xff1a;~$ uname -…

JAVA解析纯真IP地址库

2019独角兽企业重金招聘Python工程师标准>>> 用java实现对纯真IP数据库的查询&#xff0c;首先到网上下载QQwry.da文件&#xff0c;读取代码如下&#xff1a;1.IP记录实体类 package com.guess.tools; /** * 一条IP范围记录&#xff0c;不仅包括国家和区域&#xff…

java jespa_Jespa实际运用的一点心得

最近在项目中遇到一个需求&#xff0c;此需求场景就是&#xff1a;当用户登录了windows&#xff0c;若用户用的AD域账号登录&#xff0c;则用IE浏览器打开应用系统时&#xff0c;则不必再输入账号和密码&#xff0c;自动登录到系统。简单滴说&#xff0c;就是应用系统与AD域进行…

webstorm 代码提示

1、vue语法提示 设置 – Inspections – HTML – Unknown HTML tags&#xff0c;添加customs v-text     v-html     v-once     v-if     v-show     v-else     v-for     v-on     v-bind     v-model     v-ref     v-el   …