当前位置: 首页 > article >正文

java八股!3

文章目录

      • java序列化与反序列化
      • java创建线程有几种方式
      • 线程的生命周期
      • run方法和start方法的区别?可以直接调用run方法吗

java序列化与反序列化

序列化是指可以将对象转换成字节序列,可以保存在磁盘上,也可以在网络中运输。并允许程序将这些字节序列再次恢复成原来的对象的过程叫反序列化。

若对象要实现序列化,需要继承Serializable接口,是一个标记接口,没有提供任何实现方法,只是用来标记该类可以序列化。

若实现序列化,可以通过对象流ObjectInputStream和ObjectOutputStream对象的writeObject的方法以输出序列化的对象和对字节流反序列化转换成对象。

java创建线程有几种方式

三种,继承Thread类(需要重写run函数),实现runnable接口,使用executor框架创建线程池,把线程的生命周期交给线程池管理

线程的生命周期

创建线程:使用new Thread()
runnable状态(就绪),线程已经比启动,等待系统资源以便运行,调用start函数后就进入就绪状态
running状态,线程正在运行中,开始执行run中的代码
blocked(阻塞状态):线程可能处于等待io完成状态,或者等待资源释放,处于阻塞状态
waiting(等待状态):线程进入等待状态,可以通过调用object.wait(),Thread.join()等方式进入,等待其他线程唤醒
超时等待:线程等待一段时间,当时间到达或者满足某种条件时,就会进入就绪状态,通过thread.sleep(), Object.wait(timeout)等方式可以进入超时等待状态
终止:线程执行完run方法或者因抛出异常而退出的时候进入中止状态,此时线程不再可以切换到其他状态了

run方法和start方法的区别?可以直接调用run方法吗

run方法是直接在当前进程的上下文中执行的,并不会创建新的进程,start方法是启动一个新线程,线程处于就绪状态,并分配好cpu资源的时候,会在新线程中执行run方法。


http://www.kler.cn/a/298334.html

相关文章:

  • 调度算法及其性能指标
  • 【Rust】007-包管理与模块管理
  • 网络通信的加密协议TSL
  • Python | Leetcode Python题解之第387题字符串中的第一个唯一字符
  • C++ Windwos 文件操作
  • GS-SLAM论文阅读笔记--MM-Gaussian
  • Vue组件:插槽
  • VR Outdoor Cinema VR户外电影院环境模场景型
  • 微信小程序中,import 两种路径引入方式的区别和使用场景
  • c++180copy构造函数的调用
  • 第10章 Service 和 BroadcastReceiver
  • Sobel边沿检测
  • 【前端】vue+html+js 实现table表格展示,以及分页按钮添加
  • Dubbo 安全方面措施
  • 【机器人工具箱Robotics Toolbox开发笔记(十三)】三自由度机器人圆弧轨迹规划仿真实例
  • InfluxDB和OpenTSDB两种时序数据库应用场景
  • Mysql基础练习题 1757.可回收且低脂的产品(力扣)
  • 二叉树 - 验证二叉搜索树
  • 知识蒸馏-KD
  • js 有关小数的方法