• 第九周学习视频(二)


    一、MouseEvent

    每个鼠标事件处理方法都将MouseEvent对象作为它的实参。
    MouseEvent对象包含关于所发生的鼠标 事件的信息。包括事件发生所在位置的X、Y坐标。
    InputEvent(MouseEvent的超类)中的方法和常量,使程序能判断用户按下的是哪个鼠标按钮。

    二、适配器类

    对于具有多个方法的许多事件监听接口,Java.awt.event和Java.swing.event包 提供了事件监听器的适配器类。
    适配器类实现相应的接口,并提供接口中的每个方法的默认实现(方法体为空)。
    编程时可以扩展适配器类,继承每个方法的默认实现,进而只重写需要用于事件处理的那些方法。(对其他不需要涉及的方法,可以不去实现)
    eg. addMouseListener( new MouseAdapter() {……} )

    三、JDesktopPane和JInternalFrame

    多文档界面的程序(MDI),就是用一个包含其他窗口的主窗口来并行的管理多个 打开的文档。
    用户可以在不同的文档间切换,不必先关闭一个再打开另一个。
    JDesktopPane是用于管理JInternalFrame的子窗口容器。可用于实现多文档界面程序。

    四、选项卡JTabbedPane

    JTabbedPane将GUI组件按不同的层次管理,每次只有一层是可见的。
    用户通过选项卡访问每个层次。
    任何组件都可以放置到选项卡中。

    五、键盘事件

    当按下和释放键盘上的键时,会发生键盘事件KeyEvent。
    处理键盘事件的接口KeyListener,定义了如下方法:
    (1)keyPressed();(当按下任何键时)
    (2)keyTyped();(当按下不为动作键的任何键时)
    (3)keyReleased()。(当在任何keyPressed或者keyTyped事件之后释放键时)

    六、可插入式外观

    Swing可插入外观使得组件和组件绘制相分离,这样应用程序可以在运行的时候动 态改变外观而不影响程序的功能。
    对每一个Swing组件,外观包都包含许多 Swing 个UI类和一个 LookAndFeel的子类.
    以UI结尾的类是为Swing组件提供用户界面的,如BasicButtonUI、MetalButtonUI等 ,它们是实际上进行组件绘制的类。
    LookAndFeel子类提供了构建特定外观的全局信息,包括组件颜色、字体、边框等。

    七、UIManager

    UIManager包含嵌套类LookAndFeelInfo ,维护关于外观的信息。
    UIManager类负责选择外观,它最重要的功能就是提供了一种方便的手段来获取当前 外观的相关信息,当一个外观被选中的时候,它创建自己的 UIDefaults表,而UIManager中的getDefaults方法则提供了访问这个表的功能。
    通过调用UIManager类的setLookAndFeel方法来设定当前外观。

    八、程序、进程和线程

    程序(program):是对数据描述与操作代码的集合,是应用程序执行的脚本,以文件的形式存储在磁盘。
    进程:是一个程序在其自身的地址空间中的一次执行活动。(一个程序的运行就是一个进程从创建、运行到消亡的过程。)进程是资源申请、调度和独立运行单位,因此 它使用系统中的运行资源,是操作系统分配资源的基本单位。同一个程序可以被加载到系统的不同内存区域分别执行,形成不同的进程。
    线程:是进程中的一个单一的连续控制流程。一个进程中可以包含多个线程,每个进程至少包含一个线程,所以会自动创建一个线程,这个线程通常称为主线程。线程又称为轻量级进程,和进程一样,拥有独立的执行控制,由操作系统负责调度,也可以由用户程序控制。


    与进程的区别在于:线程没有独立的存储空间,而是和所属进程中的其他线程共享一个存储空间,使得线程间的通信较进程简单。
    线程是与操作系统相关联的,不同的操作系统以不同的方式表示线程。


    从程序设计语言的角度看看“多线程程序设计”的实际意义是将程序从逻辑上分割为多个任务来同步完成,而程序员不必关系到底使用了多少个处理器。

    九、创建并执行线程

    在java的历史版本中,有两种创建多线程程序的方法:
    (1)通过创建Thread类的子类来实现
    (2)通过实现Runnable接口的类来实现(推荐)

    十、通过Thread类实现多线程

    (1)设计Thread的子类
    (2)根据工作需要重新设计线程的run方法
    线程类Thread中提供的run是一个空方法。为此,我们可以继承Thread,然后覆盖 (override) run,使得该线程能够完成特定的工作。
    (3)使用start方法启动线程,将执行权转交到run。

    十一、通过Runnable接口创建线程

    主要步骤:
    (1)创建某个类实现Runnable接口,实现run()方法。
    (2)创建Thread对象,用实现Runnable接口的对象作为参数实例化该Thread对象。
    (3)调用Thread的start方法。

    十二、线程类型

    后台线程:如果一个程序中只有后台线程在运行时,程序会立即退出。后台线程常用于为其他线程提供服务。后台线程常用于为其他线程提供服务。(非独立存在)
    用户线程:如一个程序存在正在运行的用户线程,该程序不会退出。


    类java.lang.Thread的成员方法:public final boolean isDaemon( )
    //判断该线程是否为后台线程
    类java.lang.Thread的成员方法 public final void setDaemon(boolean on)
    //决定是否将用户线程切换为后台线程

    十三、线程组

    线程组是一些线程和线程组的集合,形成树状体系结构。

    十四、使用线程池管理线程

    Java5.0对线程操作做了许多扩展,线程池就是其中之一。
    线程池的基本思想: 开辟一块内存空间,里面存放了若干(未死亡)的线程,这些线程由池管理器来进行调度执行。当有任务时,从池中取一个线程来处理该任务, 任务完成后线程对象归池。这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。(为部分线程由线程池事现分配好资源


    线程池的种类:固定尺寸的线程池;可变尺寸线程池。
    创建一个线程池,需要使用 java.util.concurrent.Executors类的 API,它是Executor的工厂类,通过Executors可以创建你所需要的Executor。这个类提供大量创建线程池的静态方法。

    十五、创建固定大小的线程池

    public static ExecutorService newFixedThreadPool(int nThreads):创建固定数目线程的线程池。
    当要加入的池的线程(或者任务)超过池最大尺寸时候,需要排队等待。
    一旦池中有线程完毕,则排队等待的某个线程会入池执行。

    十六、ExecutorService

    ExecutorService接口扩展了Executor接口 ,并添加了一些线程池生命周期管理的方法。
    一个Executor的生命周期有三种状态:运行、关闭、终止 。


    Executor创建时处于运行状态。
    当调用ExecutorService.shutdown()后,处于关闭状态。这时,不应再向Executor中添加任务。
    所有已添加的任务执行完毕后,线程池关闭,Executor处于终止状态。


    如果Executor处于关闭状态时往Executor提交任务,会抛出uncheckedexceptionRejectedExecutionException。
    可以使用Executor中定义的execute的方法来运行一个Runnable对象。(即把对象交付给线程池)
    ExecutorService.isTerminated()方法检测线程是否已经运行结束。


    eg. ExecutorService executor = Executors.newFixedThreadPool(NTH REDS);
    Runnable worker = new MyThread();
    executor.execute(worker);//创建线程运行这个任务或者将这个任务放入队列

    十七、创建单任务线程池

    public static ExecutorService newSingleThreadExecutor()
    创建一个单线程化的ExecutorService对象, 这个对象只有一个线程用于执行任务。若任务多余一个,任务将按先后顺序执行。

  • 相关阅读:
    Powerful Bash-style command line editing for cmd.exe
    VBA Code for Word Navigation Pane 【failed】 view-showheading-method-word
    network lab simulator
    Global Git ignore
    hosts 持续更新
    TC Hangs when using quick search extended on win10 (1703)
    mybatis缓存机制
    web网上书店总结(jsp+servlet)
    Spring AOP之多切面运行顺序
    C语言实现蛇形矩阵
  • 原文地址:https://www.cnblogs.com/caihan/p/12703590.html
Copyright © 2020-2023  润新知