线程与进程

进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。

线程是操作系统进程中能够并发执行的实体,是处理器调度和分派的基本单位。

每个进程内可包含多个可并发执行的线程。
线程自己基本不拥有系统资源,只拥有少量必不可少的资源:程序计数器、一组寄存器、栈。
同属一个进程的线程共享进程所拥有的主存空间和资源。
在传统OS中,拥有资源、独立调度和分派的基本单位都是进程,在引入线程的系统中,线程是调度和分派的基本单位,而进程是拥有资源的基本单位。
在同一个进程内线程切换不会产生进程切换,由一个进程内的线程切换到另一个进程内的线程时,将会引起进程切换。

线程切换

上下文切换的开销
当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。

单线程与多线程

多线程可以提高程序的并行性,可以把任务分开有序执行,有效利用cpu资源,提高响应速度。但是并不代表它比单线程处理的速度快,在进行密集计算时,单线程的速度要比多线程快些。
多线程的缺点:
1)增加资源消耗
线程在运行的时候需要从计算机里面得到一些资源。除了CPU,线程还需要一些内存来维持它本地的堆栈。它也需要占用操作系统中一些资源来管理线程。
多个线程在创建和切换时,消耗的时间和资源更多
2)多个线程共享1个cpu,需要cpu不停地切换执行线程。

java某些类为什么要实现Serializable接口?

当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象转换成一个字节序列,可以把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象。
序列化可以将内存中的类写入文件或数据库中。比如将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留序列化时类中的所有变量和状态。 甚至可以将该字节序列放到其他计算机上或者通过网络传输到其他计算机上恢复,只要该计 算机平台存在相应的类就可以正常恢复为原来的对象。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

hashmap与hashtable的区别?以及如何使用,以及他的一些方法?

1、HashMap不是线程安全的
hashmap是一个接口,是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。
2、HashTable是线程安全的一个Collection。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map接口的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差别。
总结:
hashmap线程不安全 允许有null的键和值 效率高一点、 方法不是Synchronize的,要提供外同步 有containsValue和containsKey方法
hashtable 线程安全 不允许有null的键和值 效率稍低、 方法是Synchronize的 有contains方法方法
Hashtable 继承于Dictionary 类 Hashtable 比HashMap 要旧
HashMap 是Java1.2 引进的Map interface 的一个实现,HashMap是Hashtable的轻量级实现。

利用hashmap对苹果的重量进行排序

一、按key值排序
假设HashMap存储的键-值对为(String,Integer),按key排序可以调用JDK函数sort(默认的按字典升序):
Set keySet = map.keySet();
Collections.sort(keySet);
for(Iterator ite = keySet.iterator(); ite.hasNext()

JAVA开发面试常问问题总结2相关推荐

  1. 各大互联网公司java开发面试常问问题

     本人是做java开发的,这是我参加58,搜狐,搜狗,新浪微博,百度,腾讯文学,网易以及其他一些小的创业型公司的面试常被问的问题,当然有重复,弄清楚这些,相信面试会轻松许多. 1. junit用法 ...

  2. 总结Java开发面试常问的问题,持续更新中~

    数据库 mysql redis java java虚拟机 java并发 java容器 java基础 计算机网络 数据结构与算法 操作系统/Linux 设计模式 场景题和设计题 流行框架 数据库 mys ...

  3. JAVA开发面试常问问题总结3

    Java集合类 Java的集合类都位于java.util包中,Java集合中存放的是对象的引用,而非对象本身. Java集合主要分为三种类型: 1.Set(集):集合中的对象不按特定方式排序,并且没有 ...

  4. JAVA开发面试常问问题总结4

    java的三大特性 封装.继承.多态 抽象类和接口的区别 Java抽象类: 使用关键字abstract修饰的类叫做抽象类. 用abstract来修饰的方法叫做抽象方法. 特点: 1含有抽象方法的类必须 ...

  5. JAVA开发面试常问问题总结1

    1.Java中所有类的父类是什么?它都有什么方法,请列举. Object类是所有类.数组.枚举类的父类.它提供了如下几个常用方法: 1)equals():判断指定对象与该对象是否相等. 2)final ...

  6. 计网核心总结(测试开发面试常问题目)

    计算机网络(测试开发面试题总结) 协议层及其服务模型 参考模型 网际协议栈 应用层 网络应用程序体系结构 HTTP协议 Cookie和Session DNS:域名系统 传输层 传输层服务 UDP协议 ...

  7. Java基础(以及面试常问问题)

    1.Vector,ArrayList, LinkedList的区别(面试常问到的) 三者都是实现集合框架中的List,也就是所谓有序集合,因此具体功能比较近似,比如都提供按照位置进行定位.添加或删除的 ...

  8. Java面试常问计算机网络问题

    转载自   Java面试常问计算机网络问题 一.GET 和 POST 的区别 GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?na ...

  9. java中高级面试_中高级面试常问:Java面向对象设计的六大原则

    这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则.只有掌握了这些原则,我们才能更好的理解设计模式.我们接下来要介绍以下6个内容.单一职责原则--SRP 开闭原则--OCP 里式替换原则--LS ...

最新文章

  1. 【深度学习】(5) 简单网络,案例:服装图片分类,附python完整代码
  2. getopt 函数2
  3. C++ typeid操作符
  4. kube-controller-manager 配置参数解读
  5. jdbc mysql 换行符_mysql JDBC URL格式各个参数详解
  6. 初识linux 命令(一)
  7. hdu2642二维树状数组单点更新+区间查询
  8. JS事件流与DOM事件处理程序
  9. linux imx6 sdio wifi,关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试
  10. 一个不错的Redis实战学习视频教程
  11. 项目启动时就执行某些操作、@Scheduled定时项目启动时执行一次
  12. php es6写法,深入浅出es6模板字符串
  13. 面试中被问到“为什么从上一个单位离职”怎么回答
  14. 曲卉:高阶增长黑客实战营
  15. 一张图解释什么是遗传算法_如何通俗易懂地解释遗传算法?有什么例子?
  16. PS调整图片内存大小快捷键
  17. 【MMDetection3D】MVXNet踩坑笔记
  18. java 抓取网页内容小工具
  19. SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)
  20. 细分曲面建模之颜料管

热门文章

  1. 【LeetCode 剑指offer刷题】树题19:8 二叉树中序遍历的下一个结点
  2. WCF系统内置绑定列表与系统绑定所支持的功能
  3. C#实用杂记-EF全性能优化技巧
  4. 【荐】万能清除浮动样式
  5. request.getAttribute()和request.getParameter()区别
  6. WAMPSERVER 启动后打开LOCALHOST是一张IIS7的图片的解决
  7. 访问数据库时如何解决并发问题
  8. svn从本地更新了资源库的资源后删除了某个文件夹无法恢复(已解决)
  9. Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)
  10. 【代码笔记】iOS-performSelectorOnMainThread