1. Java中多线程的创建方式有两种,分别是__继承Thread__和_____实现Runnable接口______。
2. 对于InputStream 来说,从方向上来分,它是 输入 流,从传输数据格式上分,它是 字节 流 。
3. FileInputStream 的无参的read 方法返回值为__int_类型,表示__读取一个字节的数据_。
4. Java反射处理的核心类是_Class_,通过它可以取得类的描述信息。
5. 注解中 @Override用于修饰_重写的_方法。
6. JavaAPI中内置的XML的解析技术主要___Dom__和___SAX____。
7、 创建线程必须重写线程类中的_run_方法,启动线程必须调用__start()___方法。
8. 程序中可能出现一种情况:多个线程互相等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,这种现象叫_死锁_。
10. 注解@Deprecated用于修饰_即将被弃用的_方法,@Override用于修饰__重写的_方法。
11. DOM 的全称是 ___ Document Object Model ___ 。
12. 计算机网络通信中_____ip地址_____标识计算机的逻辑地址。
13. File类中用来创建文件的方法是 createNewFile ,用来创建目录的方法是 mkdir/mkdirs 。
14、 DOM中节点分为元素节点、_属性节点_ 及 _文本节点_ 三种。
15、在ServerSocket类中,通常使用__accept()_方法来监听是否有客户端连接,该方法的返回值类型是__Socket_____.
16、端口号是一个16位无符号整数,范围是 _0-65535___
17. 集合框架中 List 和 Set 的父类型是 __Collection__ 。
1. 流按传输方向分类可以有_输入流_ 和 _输出流_。
2. 判断文件是否存在的正确方法是 _file.exists()_ 。
3. Java线程编程中,如果让线程睡眠,可以用_sleep()_方法实现。
4. 在Java中,在尝试对null对象操作时,会产生_空指针异常__类型的异常。
5. Thread类属于 _java.lang__程序包 。
6. 以对象为单位把某个对象写入文件,则需要使用__writeObject()_ 方法。
7. 若一个类对象能被整体写入文件,则定义该类时必须实现 __Serializable__接口。
8. 在线程同步中,为了唤醒另一个等待的线程,可以使用__notify()_方法。
9. 当使用客户端套接字Socket创建对象时,需要指定___服务器名__和 __端口号___。
10. 使用UDP套接字通信时,常用_DatagramPacket__类把要发送的信息打包.
11、Junit测试,所有测试方法运行前运行的方法用____ @Test _____注解表示,该方法必须用修饰符__public__修饰
12.Java中内置注解@Override表示__重写的方法__意思,元注解@Target用来表示注解的___使用范围____
13.TCP/IP四层网络模型包含__应用层_、__传输层__、__互联网层__和__网络接口层__。
14.文件传输协议是__FTP ___,超文本传输协议是__ HTTP ______
15.所有字符输入流的父类是__Reader___
什么是线程的新建状态
使用new关键字创建其实例,此时的状态为新建状态。
请列举实例化Class类对象的四种方法
1、调用对象的getClass()方法
User user=new User();
Class Class();
2、类名的.class属性
Class class=User.class;
3、通过Class类的forName()
Class clazz=Class.forName("wer.user.User");
4、通过类加载器的loadClass():
ClassLoader cl=.....;
Class clazz=cl.loadClass("wer.user.User");
List<? extends T>和List <? super T>之间有什么区别。
<? extends T>设置泛型通配符上限
只有继承了T类的类型才能作为参数
<? super T>设置泛型通配符下限
只有被T类所继承的父类(被实现的接口)才能作为参数
简述对于建立功能齐全的Socket,其工作过程包含的基本步骤。
服务器:
1、创建ServerSocket实例
意味着服务器已启动起来。
2、侦听客户端连接
如果有客户端连接进来,则返回客户端Socket的实例
3、基于IO流与客户端通信
通过客户端获取字节输入流、字节输出流
4、关闭资源
流需要关闭
Socket需要关闭
客户端:
1、创建客户端实例
需要指定服务器的IP、端口
2、基于IO流与服务器通信息
3、关闭资源
流需要关闭
Socket需要关闭
简述什么是线程沲及常见的四种线程沲类型
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。任务启动时线程池会创建大量空闲的线程,程序将一个Runnable对象或者Callable对象传给线程池,线程池就会启用一个线程来执行它的run()或call()方法。执行完毕改线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个。
static ExecutorService newCachedThreadPool():
创建带有缓冲功能的线程池。
如果线程池中无空闲的线程,则会创建新的线程去执行任务。
static ExecutorService newFixedThreadPool(int nThreads)
创建固定数量的线程池。
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) :
创建具有任务调用功能的线程池。
static ExecutorService newSingleThreadExecutor():
延伸阅读
1、newFixedThreadPool 定长线程池 一个有指定的线程数的线程池,有核心的线程,里面有固定的线程数量,响应的速度快。正规的并发线程,多用于服务器。固定的线程数由系统资源设置。核心线程是没有超时机制的,队列大小没有限制,除非线程池关闭了核心线程才会被回收。
2、newCachedThreadPool 可缓冲线程池 只有非核心线程,最大线程数很大,每新来一个任务,当没有空余线程的时候就会重新创建一个线程,这边有一个超时机制,当空闲的线程超过60s内没有用到的话,就会被回收,它可以一定程序减少频繁创建/销毁线程,减少系统开销,适用于执行时间短并且数量多的任务场景。
3、ScheduledThreadPool 周期线程池 创建一个定长线程池,支持定时及周期性任务执行,通过过schedule方法可以设置任务的周期执行
4、newSingleThreadExecutor 单任务线程池 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行,每次任务到来后都会进入阻塞队列,然后按指定顺序执行
corepollsize : 核心池的大小,默认情况下,在创建线程池后,每当有新的任务来的时候,如果此时线程池中的线程数小于核心线程数,就会去创建一个线程执行(就算有空线程也不复用),当创建的线程数达到核心线程数之后,再有任务进来就会放入任务缓存队列中。当任务缓存队列也满了的时候,就会继续创建线程,知道达到最大线程数。如果达到最大线程数之后再有任务过来,那么就会采取拒绝服务策略。
Maximumpoolsize : 线程池中最多可以创建的线程数
keeplivetime : 线程空闲状态时,最多保持多久的时间会终止。默认情况下,当线程池中的线程数大于corepollsize 时,才会起作用 ,直到线程数不大于 corepollsize 。
workQuque: 阻塞队列,用来存放等待的任务
rejectedExecutionHandler :任务拒绝处理器(这个注意一下),有四种
java线程池创建的四种简述TCP与UDP的区别
TCP/IP是传输层协议
面向连接
稳定、安全可靠
传输效率低
UDP协议
无连接的
不可靠的传输协议
传输效率高
简述进行XML解析时DOM与SAX的区别
DOM解析方式:DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,生成树,解析成一个个Node对象(节点)
优点:把XML文件在内存中构建属性结构,可以遍历和修改节点。
缺点:如果文件比较大,内存有压力,解析的时间会比较长。
适用:修改XML数据
SAX解析方式:逐行扫描文档,一遍扫描一遍解析。相比于DOM,SAX可以在解析文档的
任意时刻停止解析解析,是一种速度更快,更高效的方法
优点:解析可以立即开始,速度快,没有内存压力
缺点:不能对结点做修改
适用:读取XML文件
sleep()和wait()有什么区别
sleep()使当前线程暂停 millis毫秒,让其它线程有机会执行,不释放锁。
wait()使用当前线暂停,并且释放锁,且必须和notify()成对使用
sleep与yield方法的区别。
1、 sleep()方法会给其他线程运行的机会,而不考虑其他线程的优先级,因此会给较低线程一个运行的机会。yield()方法只会给相同优先级或者更高优先级的线程一个运行的机会。
2、 当线程执行了sleep(long millis)方法后,将转到阻塞状态,参数millis指定睡眠时间;当线程执行了yield()方法后,将转到就绪状态。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论