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;

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的情况?

代码托管

885194-20160410195956984-1175037392.png
885194-20160410200004328-794728228.png
885194-20160410200009859-405573173.png

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2001/120/20编写简单程序
第二周350/5501/230/30用IDE调试修改程序
第三周500/10501/335/85
第四周500/15501/430/115
第五周500/20501/530/145
第六周700/27502/730/175

参考资料

转载于:https://www.cnblogs.com/entropy/p/5375179.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值