25.01_多线程(多线程方法)
- 1.yield让出CPU
- 2.setPriority()设置线程的优先级;最高10级,最低1级,默认5级
25.02 _多线程(单例设计模式)
-
单例设计模式:保证类在内存中只有一个对象
-
如何保证类在内存中只有一个对象呢?
- (1)控制类的创建,不让其他类来创建本类的对象。private
- (2)在本类中定义一个本类的对象。Singleton s;
- (3)提供公共的访问方式。 public static Signleton getInstance() {return s}
-
单例写法两种:
- (1)饿汉式,开发用这种方法。
-
//大萨达大萨达 代码块 大赛大萨达 大萨达 大赛
- (2)懒汉式 面试写这种方法。多线程的问题?
-
//大萨达 大萨达
25.03_多线程(Runtime类)
- Runtime类是一个单例类
25.04_多线程(Timer)
- Timer类:计时器
25.05_多线程(两个线程间的通信)
- 1.什么时候需要通信
- 多个线程并发执行时,在默认的情况下CPU是随机切换线程的
- 如果我们希望他们有规律的执行,就可以使用通信,例如每个线程执行一次打印
- 2.怎么通信
- 如果希望线程等待,就调用wait()
- 如果希望唤醒等待的线程,就调用notify();
- 这两个方法必须在同步代码中执行,并且使用同步锁对象调用
25.05_多线程(线程间的通信面试题)
-
在同步代码块中锁对象是谁,就用哪个对象来调用wait
-
为什么wait() 方法和notify() 方法需要定义在Object中
-
所有的对象都是Object的子类对象,而所有的对象都可以当做锁对象
-
sleep方法和wait方法的区别
- 1.sleep方法必须传入参数,参数就是时间,当时间到了,不用唤醒自动醒来
wait方法不是必须传入参数,如果没有参数,遇到wait就等待,如果传入参数,等参数的时间到后等待 - 2.sleep方法在同步中不释放锁,wait方法在同步中释放锁。
- 1.sleep方法必须传入参数,参数就是时间,当时间到了,不用唤醒自动醒来
25.06_多线程(三个或三个以上间的线程通信)
25.07_多线程(JDK1.5的新特性互斥锁)
- 1.同步
- 使用ReentrantLock类的lock()和unlock()方法进行同步(reentrant:再进去)
- 2.通信
- 使用ReentrantLock类的newCondition()方法可以获取Condition对象
- 需要等待的时候使用Condition的await() 方法,唤醒的时候使用signal() 方法
- 不同的线程使用不同的Condition,这样就能区分唤醒的时候找哪个线程了。
(Condition相当于监视器)
25.11_设计模式(简单工厂模式概述和适用)
25.12_设计模式(工厂方法模式概述和适用)
25.13_GUI(如何创建一个窗口显示)-----鬼编程
- Graphical Uer Interface(图形用户接口)。