Core Java学习笔记 多线程

Posted on 2009-06-30 18:48 eric_xu 阅读(198) 评论(0)  编辑  收藏 所属分类: Java

事件处理

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状态了。

Threadstart方法会创建一个新的线程来执行run方法,启动这个线程,将引发调用run()方法。

Thread(Runnable target)构造一个新的线程来调用指定targetrun()方法。

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;

导致线程进入等待状态直到被通知。只能在同步的方法中用。

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 37, comments - 5, trackbacks - 0, articles - 0

Copyright © eric_xu