JAVA基础总结(七)

乐橙谷JAVA总结-图形-事件处理,绘图

图形用户界面

1.内部类:在一个类的里面再定义一个类称为内部类

*内部类可以访问外部类的所有的成员变量与成员方法
*如果想在外部实例化内部类,必须使用全名:外部类.内部类

2.事件模型:

*java事件采用委托模型(授权模型),即事件源本身不处理事件,交给事件监听器来处理,因此需要把事件监听器绑定到事件源里面

*事件源,事件,事件监听器。事件有许多种,不同的事件使用不同监听器来处理

*事件触发后,系统自动调用事件处理方法(不需要手动调用事件处理方法),并传递事件信息作为方法参数

*事件编写步骤:

1.实现监听器接口(完成事件处理方法);

2.实例化实现监并绑定到事件源    3.事件实现方式

*外部类

*内部类

乐橙谷JAVA总结-多线程

线程: 1.线程的概念

*程序里面不同的执行路径,每一个执行路径称为一个线程
*对于单cpu来讲,某一具体的时刻,只会有一个线程在运行,但是CPU的速度非常快,表面上看起来是许多个线程并行执行

2.java中线程的创建与启动

*两种实现线程的方式:继承Thread,实现Runnable接口
*线程的启动:start.启动线程,运行线程的run方法,run方法运行完线程就结束(注意,start只在Thread里面有,start不同于run)
*注意一个Thread对象,只能一次调用start方法
*ThreadRunnable的区别:1Runnable是接口,比Thread灵活(因为java只能单继承,可以同时实现许多接口);2.一个Runnable对象可以启动许多个线程,线程之间共享对象(Thread不能共享对象)

3.线程的状态:new ,可运行,运行中,阻塞,死亡

4.线程的调度

*Thread.sleep,使该线程睡眠
*join:线程合并(结果类似与方法调用)
*yield:线程让出当前CPU,留给其他线程运行
*线程优先级:setPriority设置线程优先级
*后台线程:setDaemon,必须在线程运行前设置为后台线程.当所有的前台线程都结束了,后台线程自动结束
*线程可以指定名字,取得当前线程的方法Thread.currentThread();

5.线程同步

*synchronized:同一时刻,只会有一个线程执行synchronized代码块

6.线程间通讯

*wait(),notify(),notifyAllObject类中定义的方法
*wait():使得运行该代码的线程进入对象的等待池进行等待,线程进入阻塞状态,wait的线程一直阻塞,指导其他线程调用该对象的notify方法唤醒它。
*notify():唤醒对象等待池中的一个线程,使得被唤醒的线程进入可运行状态,如果等待池中没有线程,notify什么也不做。
*notifyAll():唤醒对象等待池中的所有线程
*wait(),notify,notifyAll都必须放在同步代码块里面(Synchronized代码块).
*wait()的线程会释放对象的锁,而Thread.sleep的线程不会释放对象的锁

7.线程安全的类:多线程的环境下使用类或者调用类的方法不会造成同步问题的类称为线程安全的类

*JDK1.1以前,java的集合框架中有一些线程安全的类:如Vector(被ArrayList代替),HashTable(被HashMap代替)

文章转至:乐橙谷公会  http://www.lechenggu.com/bbs/topic/57eb4513fa0f9d733c1799df
原文地址:https://www.cnblogs.com/linglipinger/p/5916626.html