java第25天(线程等待,唤醒,同步块,线程池,XML)

线程阻塞方法

wait():等待,直接让出时间片,并自己进入到等待状态(就绪状态),但此时的线程不会进入到抢时间片的行列,必须等待notify()或者notifyAll()来进行唤醒
notify():唤醒下一个等待
notifyAll():唤醒所有等待的线程
1注意:
1.上面的的方法都是Object中的
2.wait()方法必须出现在同步块或者同步方法中
2注意

同步块

静态块:static{}
同步块:synchronized(锁对象){}
image

线程池

线程池:重用线程
常量池:重用字符串
如果频繁的创建多个线程,用完即销毁,会造成系统资源损耗,严重可能会导致系统崩溃

创建一个线程池,并且指定线程池中最多存在3个线程
ExecutorService es=Executors.newFixedThreadPool(3);
shutdown():关闭线程池,但是如果线程池中已经有线程在执行任务了,会等到执行完任务后再关闭线程池
shutdownNow():立即关闭线程池,如果有线程池在执行任务,会强制中断

image

XML

XML:可扩展标记语言

通常是用来传输数据的.例如:调用微信支付的接口,需要将数据打包成xml格式的-->微信端获取xml数据并解析,获取到标签中的内容,然后返回结果给调用者
特点:内容也是存在标签中,但是xml中的标签都是自己定义的

HTML:超文本标记语言

特点:网页中的内容都是放在标签中,而标签都是固定的.
面试题:SAX解析和DOM解析的区别?

  1. SAX解析: 逐行解析,一边加载一边解析
    特点: 解析速度快,没有内存压力,但是不能对节点进行操作
  2. DOM解析:将整个文件先全部加载完,再进行解析
    特点:先将文件在内存中加载成树状结构,然后再依次解析,解析速度慢,然后会有内存压力
    dom4j 引入外部的jar包
    jar包中通常都是别人写好的源代码,我们想要借助这些代码中的功能来实现自己的功能

image
写出的步骤:
1.创建Document文档对象
2.创建根元素
3.创建子元素
4.往子元素中添加属性元素
5.往属性元素中添加具体的值
image

解析的步骤:
1,创建SAXReader对象
2,将目标文件解析成一个Document(文档)对象
3,找到文件中的根元素
image

4,找到根元素中的每一个同级的子元素
5,找到子元素中对应元素的属性元素
6,获取属性元素中的文本内容

posted @ 2022-10-12 20:16  不再犹豫27  阅读(26)  评论(0)    收藏  举报