• 20165201 2017-2018-2 《Java程序设计》第8周学习总结


    20165201 2017-2018-2 《Java程序设计》第8周学习总结

    教材学习内容总结

    第十二章

    1.Java线程的状态

    • 新建:当线程对象创建后,即进入了新建状态。仅仅由java虚拟机分配内存,并初始化。如:Thread t = new MyThread();
    • 运行:当CPU开始调度处于就绪状态的线程时,执行run()方法,此时线程才得以真正执行,即进入到运行状态。注:绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中
    • 暂停:处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:等待阻塞 – 运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态,JVM会把该线程放入等待池中;同步阻塞 – 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;其他阻塞 – 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态
    • 死亡:线程run()方法执行完了或者因异常退出了run()方法,该线程结束生命周期。 当主线程结束时,其他线程不受任何影响

    2.创建线程:

    • 继承Thread类创建线程,程序中如果想要获取当前线程对象可以使用方法:Thread.currentThread();如果想要返回线程的名称,则可以使用方法:getName();
      实现Runnable接口创建线程
      使用CallableFuture创建线程

    3.线程常用方法

    • start()
    • isAlive()
      线程处于新建状态时,线程调用isAlive()方法返回false
      没有进入死亡状态之前,返回true
      进入死亡状态后(实体内存被释放),返回false
    • run()
      定义线程线程对象被调度之后所执行的操作
    • sleep(int millsecond)
      必须在try-catch语句块中调用sleep方法

    4.线程同步
    5.线程联合
    6.计时器线程 Timer类

    学习中的问题和解决过程

    • 问题:看了线程调用的方法,但是start()方法和run()方法到底有什么本质区别?

    • 问题解决方法:我在网上找到了详细的解答:只有调用了start()方法,才会表现出多线程的特性,不同线程的run()方法里面的代码交替执行。如果只是调用run()方法,那么代码还是同步执行的,必须等待一个线程的run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其run()方法里面的代码

    代码托管

    上周考试错题总结

    答案:ABCD
    守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断!!!

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 6000行 30篇 400小时
    第一周 23/23 1/5 18/18
    第二周 367/390 2/7 16/34
    第三周 672/1062 1/8 23/57
    第四周 724/1786 2/10 20/77
    第五周 1084/2870 1/11 15/92
    第六周 1187/4057 1/12 18/110
    第七周 756/4813 1/13 20/130
    第八周 1240/6053 1/14 18/148

    参考资料

  • 相关阅读:
    Cannot find or open the PDB file from http://bbs.csdn.net/topics/350149584 呼吁大家忽视结贴率为0的求助。
    使用GDI+位图数据扫描线处理图像的小技巧 from http://blog.csdn.net/maozefa/article/details/4533770
    解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法 from http://live.aulddays.com/tech/08/c1853precompile/
    使用GDI+保存用户的绘图数据.
    char、varchar、text和nchar、nvarchar、ntext的区别
    ASP.NET Cache
    ECMAScript 引用类型
    Meta标签——网站中必不可少的一部分
    ECMAScript 原始类型
    web性能测试分析工具篇
  • 原文地址:https://www.cnblogs.com/cbmwtsl/p/8910389.html
Copyright © 2020-2023  润新知