一.java绘图技术
二.java的事件监听:将类继承一个监听器接口,就变成了事件监听者,然后获取到按下键盘(此时键盘是事件源,值为事件)的值即可。事件监听器接口有多种,一个类可以实现多个监听接口。
三.线程:创建线程 1.继承Thread类重写run方法,2..实现Runnable接口,重写run方法。一个类继承线程类,该类就可以当做线程类,一般重写run方法。当main线程启动一个子线程Thread-0,主线程不会继续阻塞,会继续执行。
线程的常用方法:
线程.join 线程的插队,让插队的线程里的任务先全部执行。Thread.yeiled 线程的礼让,让其他线程先执行,可能会不成功。
用户线程:也叫工作线程,当线程的任务执行完或者通知方式结束。
守护线程:为工作线程服务,所有用户线程结束,守护线程自动结束,常见守护线程:垃圾回收机制
如何将线程设置为守护线程:线程.setDaemon。
线程的同步机制:当有一个线程对内存进行操作时,其他线程不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作。synchronized修饰对象时,可使这个对象同时只能有一个线程调度。同步方法的锁可以是this(也是同一个对象),也可以是同一个对象,静态方法的锁只能是当前类本身:类名.class。一般上锁是给同步代码块上锁或者方法上锁。
线程的死锁:多个线程都占用了对方的资源,但不可退让。
释放锁:以下操作会释放锁:1.同步方法和同步代码块结束或者遇到break或return语句 2.当前线程在同步代码块和方法中遇到错误或者异常就会释放锁。在代码块中和方法中执行了线程对象的wait方法。以下操作不会释放锁:代码块和方法中执行了Thread.sleep或者Thread.yield语句。2.执行线程的suspend()方法将线程挂起,该线程不会释放锁