• Java开发实战学习(二)


    (一)中主要记录了Java基础程序设计以及面向对象程序设计,接下来主要是Java 应用程序设计

     第九章 多线程

    多线程机制可以同时运行多个程序块,使程序运行的效率变得更高

    Java在线程的实现方式:(1)继承Thread类(2)实现Runnable接口。

    (1)正确地启动进程,是不能直接调用函数,而是调用Thread类中继承而来的start()方法。因为多线程的运行需要依靠操作系统支持

    如果一个类通过继承Thread类来实现,那么只能调用一次start()方法,如果调用多次,则会抛出“IllegalThreadStateException”异常。【单继承局限的影响】

    (2)Runnable接口的实现也是需要依靠Thread类,在Thread类中提供了public Thread(Runnable target)和public Thread(Runnable target, String name)两个构造方法

    Thread类也是Runnable接口的子类,但是在Thread类中并没有完全实现Runnable接口中的函数。

    这种操作模式和代理设计类似,Thread和Runnable的子类都实现类Runnable接口,之后Runnable的子类实例放到了Thread类中。如果一个类继承Thread类,则不适合于多个线程共享资源,而实现了Runnable接口,就可以方便地实现资源的共享。

    实现Runnable接口相对于继承Thread类来说,有如下显著的优势:

    (1)适合多个相同程序代码的线程去处理同一资源的情况。

    (2)可以避免由于Java的单继承特性带来的局限。

    (3)增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的,建议使用Runnable接口实现多线程。

    线程的五种状态:创建、就绪、运行、阻塞、终止

    创建 e.g. Thread thread = new Thread();

    就绪 e.g. start();

    运行 e.g. run();

    堵塞 e.g. sleep(); suspend(); wait();

    死亡 e.g. stop(); run;

    Java 一个JVM至少启动两个线程,一个是main线程,一个是垃圾收集线程。

    isAlive() 判断线程是否启动

    join() 线程的强制运行

    Thread.sleep() 线程休眠

    interrupt() 中断线程

    setDaemon() 后台线程

    setPriority() 设置线程优先级,MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY,并非线程的优先级越高就一定会先执行,哪个线程先执行将由CPU的调度决定。主函数的优先级是中等。

    yield() 线程的礼让

    使用同步解决问题(1)同步代码块(2)同步方法

    synchronized() 同步代码块

    多个线程共享同一资源时需要进行同步,以保证资源操作的完整性,但是过多的同步就有可能产生死锁。

    线程经典案例---生产者及消费者

    泛型

    Java常用类库

    观察者设计模式:e.g. 众多购房者关注房价变化

    Observable类和接口

    Java IO

    后面的内容感觉不太用得上 粗略自己看看就完事了。

  • 相关阅读:
    Java 位运算(移位、位与、或、异或、非)
    解决Android Studio 2.2.3中添加.cpp .h文件在Project->Android无法显示,无法正常编译问题。
    [ACM] HDU 5083 Instruction (模拟)
    Vbox视图热键
    Android Drawable 与 LayerList综合汇总
    数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
    HDU 2896 病毒侵袭 AC自己主动机题解
    对团队中“这是某某某的问题”引起的思考
    杭电 2201
    三层架构
  • 原文地址:https://www.cnblogs.com/sun-cloud/p/13050137.html
Copyright © 2020-2023  润新知