事件处理
将ColorAction作为ButtonPanel类的内部类,ColorAction就自动拥有访问外部类的权限。
将组件变成事件监听器,panel本身作为事件监听器
Object source = event.getSource()返回发生事件的对象引用。
String command = event.getActionCommand()
getSystemLookAndFeelClassName()获取系统观感
UIManager.setLookAndFeel(String className)设置观感
Java中实现一个接口的任何类都必须实现其中的所有方法。
Public interface WindowsListener
Public class WindowsAdapter implements
WindowsListener
匿名内部类
EventObject类有一个子类AWTEvent,它是所有AWT事件类的父类。Swing组件将生成其他事件类型的事件对象;它们都直接扩展于EventObject,而不是AWTEvent。
Java使用一个线程在后台进行垃圾回收。
Sleep()是Thread类的一个静态方法,暂停当前线程活动。会抛出InterruptedException异常。
实现Runnable接口
public interface Runnable{
public
abstract void run();
}
Thread t = new Thread(Runnable r);
当你用new操作符创建一个线程时。还没有调用thread.start(),处于新生状态。
t.start;
调用了thread.start()方法之后。线程就变成了Runnable状态了。
Thread的start方法会创建一个新的线程来执行run方法,启动这个线程,将引发调用run()方法。
Thread(Runnable target)构造一个新的线程来调用指定target的run()方法。
当interrupt方法在一个线程上被调用时,该线程的中断状态将被置位。
调用静态的Thread.currentThread方法来取得当前的线程。然后调用它的isInterrupted方法。
如果一个线程被阻塞了,就无法检查中断状态了。就会产生InterruptedException异常。例如sleep或者wait,这时候程序是在等待的,所以不可能去检查currentThread().isInterrupted()是否返回true。
当sleep方法抛出一个InterruptedException异常时,它同时也会清除中断状态。
Thread接口:
void interrupt()
发送一个中断请求给一个线程。中断状态被设为true。如果正在被sleep调用阻塞,抛出一个InterruptedException。
static boolean interrupted()
检查当前线程是否已经被中断了。调用这个方法会把当前的现成中断状态设置成false. currentThread
boolean interrupted()
检查一个线程是否已经被终止了。
static Thread currentThread()
返回当前线程的Thread对象。
线程组
ThreadGroup g = new ThreadGroup(String
groupName);
Thread t = new Thread(g, threadName);
未捕获异常处理器
锁对象
同步synchronized关键字,ReentrantLock类
Private Lock mylock = new ReentrantLock();
Mylock.lock;
Try{
...
}finally{
Mylock.unlock;
}
条件对象
Condition newCondition()返回该锁相关的一个条件对象;
void await()将该线程放到条件的等待集;直到条件被改变时,再次激活等待线程。
void signalAll()解除该条件的等待集中所有线程的阻塞状态。
Synchronized方法,即线程必须先获得对象的锁,才能调用该方法。
publicfinalnativevoid notify();
publicfinalnativevoid notifyAll();
解除在该对象上调用wait的线程的阻塞状态。
public final native void wait(long timeout)
throws InterruptedException;
导致线程进入等待状态直到被通知。只能在同步的方法中用。