码迷,mamicode.com
首页 > 其他好文 > 详细

20145237第六周学习总结

时间:2016-04-10 21:26:55      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

20145237第6周学习总结

教材学习内容总结





第十章

 •InputStream与OutputStream

 

流(Stream)是对「输入输出」的抽象。

 

read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节。为-1时即为未读取到数据。

 

write:指定要写出的byte数组、初始索引与数组长度。

 •标准输入输出//这部分已经很熟悉了

 

System.in: 标准输入,默认关联到键盘(终端输入)

 

System.out: 标准输出,默认关联到显示器(终端输出)

 

System.err: 标准错误,默认关联到显示器(终端输出)

 

输入输出重定向:setIn,setOut,setErr

 •其余

 

FileInputStream与FileOutPutStream:文件读写

 

BufferedInputStream与BufferedOutputStream: 内部提供缓冲,提高效率

 

DataInputStream与DataOutputStream:基本数据类型与字节的转换

 

ObjectInputStream与ObjectOutputStream:java.io.Serializable接口

 •字符处理类

 

read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节。为-1时即为未读取到数据。

 

write:指定要写出的byte数组、初始索引与数组长度。



package cc.openhome;



import java.io.*;



public class IO {



    public static void dump(InputStream src, OutputStream dest)

                               throws IOException {

        try (InputStream input = src; OutputStream output = dest) {

            byte[] data = new byte[1024];

            int length;

            while ((length = input.read(data)) != -1) {

                output.write(data, 0, length);

            }

        }

    }

}



第十一章 线程与并行API 

·单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程。示范代码如下:



 import static java.lang.System.out;



public class TortoiseHareRace {



    public static void main(String[] args) {

        boolean[] flags = {true, false};

        int totalStep = 10;

        int tortoiseStep = 0;

        int hareStep = 0;

        out.println("龟兔赛跑开始...");

        while(tortoiseStep < totalStep && hareStep < totalStep) {

            tortoiseStep++;       

            out.printf("乌龟跑了 %d 步...%n", tortoiseStep);

            boolean isHareSleep = flags[((int) (Math.random() * 10)) % 2];

            if(isHareSleep) {

                out.println("兔子睡着了zzzz");

            } else {

                hareStep += 2;    

                out.printf("兔子跑了 %d 步...%n", hareStep);

            }

        }

    }

}

 

在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。

 在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。

 

JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。

 

操作Runnable接口的好处就是较有弹性,你的类还有机会继承其他类。若继承了Thread,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

 

关于ThreadGroup

 

1.获取目前线程所属线程群组名:Thread.currentThread().getThreadGroup().getName()

 

2.ThreadGroup的某些方法,可以对群组中所有线程产生作用,interrupt()方法可以中断群组中所有线程,setMaxPriority()方法可以设定群组中所有线程最大优先权。

 activeCount()方法获取群组的线程数量 。

 enumerate()方法要传入Thread数组,这会将线程对象设定至每个数组索引。

 uncaughtException()方法第一个参数可取得发生异常的线程实例,第二个参数可取得异常对象。

 

3.未捕捉异常会由线程实例setUncaughtExceptionHandler()设定的Thread.UncaughtExceptionHandler实例处理之后是线程ThreadGroup,然后是默认的Thread.UncaughtExceptionHandler。





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





p325页的代码运行结果跟舍友不一样。跟舍友讨论后发现是因为程序中设置了兔子随机睡觉,如果兔子不睡觉就将 hareStep 递增2,表示兔子走两步,只要兔子或乌龟其中一个走完10步就离开循环,根据兔子睡觉的随机性,结果不同





本周代码托管截图



技术分享

其他(感悟、思考等,可选)



这周因为有四个实验,需要写很多实验报告,而java又有两章需要进行学习,所以学习时间真的很少,java这种自学模式需要我们很大的自制力,能够做到的话确实能够学到许多有用的知识,我还需努力。



学习进度条





|            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|

| --------   | :----------------:|:----------------:|:---------------:  |:-----:|

| 目标        | 5000行            |   30篇           | 400小时            |       |

| 第六周      | 200/1030           |   1/11            | 20/20             |       |

   

20145237第六周学习总结

标签:

原文地址:http://www.cnblogs.com/20145237fhn/p/5375313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!