多线程 | |
三种多选实现方案 | 1. 继承Thread类,重写run()方法。 2. 实现Runnable接口,new Thread(new Runnable(){…}){…}; 3. 实现Callable接口。和线程池结合。 |
实现Runnable接口的好处 | 1. 将线程的任务从线程的子类中分离出来,进行了单独的封装,实现数据和程序分离,按照面向对象的思想将任务封装成对象。 2. 避免了Java单继承的局限性。所以,创建线程的第二种方式较为常用。 |
线程间的通信 | 1. 多个线程在处理同一资源,但是任务却不同,这时候就需要线程间通信。 2. 等待/唤醒机制涉及的方法 1) wait():让线程处于冻结状态,被wait的线程会被存储到线程池中。 2) notify():唤醒线程池中的一个线程(任何一个都有可能)。 3) notifyAll():唤醒线程池中的所有线程。 |
wait,sleep区别 | 1. wait可以指定时间也可以不指定。sleep必须指定时间。 2. 在同步中时,对CPU的执行权和锁的处理不同。 wait:释放执行权,释放锁。Object中的方法。 sleep:释放执行权,不释放锁。Thread中的方法。 |
常用方法 | 1. String getName(),void setName(String name) 2. static Thread currentThread() 3. int getPriority():获取线程优先级 4. void setPriority(int newPriority):设置线程优先级 5. static void sleep(long millis):线程休眠 6. void join():线程加入,static void yield():线程礼让 7. setDaemon(boolean on):后台线程/守护线程 8. void stop( ),interrupt( ):中断线程 |
线程的生命周期 | 新建,就绪,运行,阻塞(同步阻塞,等待阻塞,其他阻塞),死亡 |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |