摘要: Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。 其中前两种方式线程执行完后都没有返回值,后两种是带 阅读全文
posted @ 2018-01-05 17:42 甜菜波波 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问 阅读全文
posted @ 2018-01-05 14:57 甜菜波波 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 这里主要涉及到类对象(static方法),对象方法(非static方法) 我们知道,当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例); 当synchronized修饰一个非static方法时,多线程下,获取的是对象锁(即类的实例对象) 阅读全文
posted @ 2018-01-05 13:45 甜菜波波 阅读(10371) 评论(2) 推荐(0) 编辑
摘要: 批处理系统中的调度算法: *需要考虑的因素: 1. 吞吐量 2. cpu利用率 3. 周转时间 4. 公平性* 1.先来先服务: FCFS: 优点:实现简单 缺点:可能造成周转时间长 2.最短作业优先 SJF(非抢占式) 优点:平均周转时间最短 缺点:不公平,短任务多时,长任务一直得不到执行,产生s 阅读全文
posted @ 2018-01-05 13:41 甜菜波波 阅读(1734) 评论(0) 推荐(0) 编辑
摘要: 产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥 阅读全文
posted @ 2018-01-05 13:39 甜菜波波 阅读(5008) 评论(0) 推荐(0) 编辑
摘要: 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下。 以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,缺没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就 阅读全文
posted @ 2018-01-05 13:21 甜菜波波 阅读(1175) 评论(0) 推荐(0) 编辑