20145313张雪纯 《Java程序设计》第6周学习总结

20145313张雪纯 《Java程序设计》第6周学习总结

教材学习内容总结

  • 将数据历来源中取出,能够使用输入串流;将数据写入目的地,能够使用输出串流。
  • 输入串流表明对象为java.io.InputStream实例,输入串流表明对象为java.io.OutputStream实例。
  • 不使用InputStream与OutputStream时必须使用close()方法关闭串流。
  • FileInputStream是InputStream的子类,能够指定文件名建立实例,一旦建立文档就开启,可用来读取数据。FileOutputStream是OutputStream的子类,能够指定文件名建立实例,一旦建立文档就开启,可用来写出数据。
  • 不管用FileInputStream仍是FileOutputStream,不使用时都要用close()来关闭文档。
  • FileReader、FileWrite能够对文档作读取与写入,读取或写入时会默认使用操做系统默认编码来作字符转换。
  • 若想在main()之外独立设计流程,能够撰写类操做java.lang.Runnable接口,流程的进入点是操做在run()方法中。
  • 若是主线程中启动了额外线程,默认会等待被启动的全部线程都执行完run()方法才停止JVM。
  • 线程有优先权,可以使用Thread的setPriority方法设定优先权。
  • 线程完成run()方法后就会进入Dead,进入Dead的线程不能够再次调用start()方法。

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

p345,有关volatile部分不太清楚。
package cc.openhome;html

class Variable1 {
    static int i = 0, j = 0;

    static void one() {
        i++;
        j++;
    }

    static void two() {
        System.out.printf("i = %d, j = %d%n", i, j);
    }
}

public class Variable1Test {
    public static void main(String[] args) {
        Thread thread1 = new Thread(() -> {
            while (true) {
                Variable1.one();
           }
            });
    Thread thread2 = new Thread(() -> {
            while (true) {
                Variable1.two();
            }
        });
    
        thread1.start();
        thread2.start();
    }
}

为什么结果会有时出现j远大于i的状况?java

代码托管



学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/1 20/20 编写简单程序
第二周 350/550 1/2 30/30 用IDE调试修改程序
第三周 500/1050 1/3 35/85
第四周 500/1550 1/4 30/115
第五周 500/2050 1/5 30/145
第六周 700/2750 2/7 30/175

参考资料

相关文章
相关标签/搜索