栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习第7周小结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习第7周小结

1.面试题:sleep()和wait()方法的区别

(1)来源不同

<1>sleep()来自于Thread类中,表示线程睡眠 sleep(long time):时间毫秒值 

<2>wait()来自于Object类中,表示线程等待,需要被锁对象来访问

(2)是否会释放锁

<1>sleep(long time):属于一个普通方法,调用该方法,不会去释放锁,只是导致线处于睡眠,当线程的睡眠时间到了,就继续执行线程

<2> wait():属于锁方法,被锁对象访问之后,会立即释放锁,才能够使用同步等待唤醒机制解决死锁问

题,通过锁对象调用notify(),唤醒对方线程

(3)这两个方法都会抛出异常(中断异常),都是属于本地方法,底层非Java语言实现

<1>当线程睡眠过程中,睡眠还没到,导致的睡眠状态被打断,就会出现InterruptedException

<2>当线程处于等待状态,被中断,就抛出这个异常

2.设计模式 2.1结构型设计模式:代理模式

代理就是代理角色帮助真实角色完成一些事情.

(1)动态代理:反射中讲

(2)静态代理:通过代理角色帮助真实角色完成一些事情,真实角色只只专注于自己的事情;前提条件:

代理角色和真实角色必须是同一个接口.

3.线程组 3.1常用方法

<1>ThreadGroup(String name): 构造一个新的线程组;

<2>public final ThreadGroup getThreadGroup():获取当前线程所属的线程组

<3>public final String getName():获取线程组名称

4.线程池

使用线程池实现第三种线程的创建方式.

4.1常用的线程池接口和类

<1>Executor: 线程池的顶级接口

<2>ExecutorService: 线程池接口,继承自Executor,可通过submit提交任务代码

<3>Executors: 工厂类,通过此类可以获得一个线程池

<4>通过Executors静态方法newFixedThreadPool(int nThreads)可获得固定数量线程池

<5>通过Executors静态方法newCachedThreadPool()获得动态数量线程池,不够会创建新的,没上限

4.2常用方法

<1>Future submit (Runnable task):  提交Runnable异步任务

<2> Future submit (Callable task):  提交Callable异步任务,需执行Callable中的call方法

<3>void shutdown(): 关闭线程池

<4>Callable接口是JDK5加入,与Runnable接口类似,实现之后代表一个线程任务,Callable具有泛型

返回值,可以声明异常.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号