4. 请说出你所知道的线程同步的方式。 从jdk5.0开始,有两种机制来保护代码快步受并行访问的干扰。旧版本的java使用synchronized关键字来达到这个目的,而jdk5.0引进了ReentrantLock类。synchronized关键字自动提供一个锁和相关联的“条件”。 用ReentrantLock保护代码块的基本结构如下: myLock.lock();//a ReentratLock object try{ critical section }finally{ myLock.unlock();//make sure the lock is unlocked even if an exception is thrown } 这种结构保证在任何时刻只有一个线程能够进入临界区。一旦一个线程锁住了对象,其他任何线程都无法通过lock语句。 当其他线程调用lock时,他们都被阻塞,直到第一个线程释放锁对象。另外 ReentratLock 对象可以附加一个或多个Condition 对象
awt与OS的有关(Font ,Color),
Swing 是纯java的,与OS没有关
2. 简述Java编程的事件处理模式。
事件:
比如说,在Swing中单击一个Button,产生一个onClick事,
事件中最主要的就是,事件源,通过事件源来进行处理 5. Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
二种方法:
1.extends Thread 重写run()方法
2.implements Runnable 接口重写run()方法 synchronized 修饰同步
stop是停止当前thread
suspend 是将当前thread挂起
因为这两个方法极易引起死锁问题
从jdk5.0开始,有两种机制来保护代码快步受并行访问的干扰。旧版本的java使用synchronized关键字来达到这个目的,而jdk5.0引进了ReentrantLock类。synchronized关键字自动提供一个锁和相关联的“条件”。
用ReentrantLock保护代码块的基本结构如下:
myLock.lock();//a ReentratLock object
try{
critical section
}finally{
myLock.unlock();//make sure the lock is unlocked even if an exception is thrown
}
这种结构保证在任何时刻只有一个线程能够进入临界区。一旦一个线程锁住了对象,其他任何线程都无法通过lock语句。
当其他线程调用lock时,他们都被阻塞,直到第一个线程释放锁对象。另外 ReentratLock 对象可以附加一个或多个Condition 对象
awt依赖于平台,比如一个按钮在WINDOWS、LINUX下的外观与感觉是不同的。
swing是平台无关的。
swing的布局管理器和事件模型都是沿用awt的。 2. 简述Java编程的事件处理模式。
事件注册:对事件感兴趣的对象(事件监听者)注册到事件源对象,当事件发生时,事件源调用事件监听者的方法进行处理。 3. 什么是匿名类不类,特点是什么?
匿名内部类,首先是个内部类,然后没有名字。
它的优点可以减少代码,而且匿名内部类可以访问到外部类的私有方法,用起来比较方便。 4. 请说出你所知道的线程同步的方式。
synchronized 或者 wait、notify、notifyAll。 5. Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
继承Thread,或实现Runnable接口。
同步方法用synchronized修饰,需要的锁就是当前对象。以下是拷贝来的:
因为它本质上就是不安全的。停止线程会导致解锁它已锁定的所有监视程序(ThreadDeath 异常传播到栈上后即解锁监视程序)。如果这些监视程序前面保护的任何对象处于不一致状态,则其它线程即可能将这些对象视为处于不一致状态。我们将这种对象称为损坏的对象。当线程操作损坏的对象时,可能会产生任何意外的行为。这种行为可能很难觉察,也可能非常明显。与其它未检查的异常不同,ThreadDeath 将悄悄杀掉线程;这样,用户就不会得到其程序已被破坏的警告。这种破坏可能会在实际损坏发生之后的任何时间显示出来,甚至可能会在数小时或数天之后。
因为这两个方法极易引起死锁问题