java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类的实例对象, 子类加上 run 方法后的代码如下: new Thread(){ public void run(){ } }.start(); 第二种:new Thread(new Runnable(){}).start();这表示调用 Thread 对象接受的 Runnable 对象的 run方法…
有两种实现方法,分别是继承Thread类与实现Runnable接口用synchronized关键字修饰同步方法反对使用stop(),是因为它不安全.它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们.结果很难检查出真正的问题所在.suspend()方法容易发生死锁.调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定.此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行.对任何线程来说,如果它…
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类的实例对象, 子类加上 run 方法后的代码如下: new Thread(){ public void run(){ } }.start(); 第二种:new Thread(new Runnable(){}).start();这表示调用 Thread 对象接受的 Runnable 对象的 run方法…
Java Web 64.jsp 和 servlet 有什么区别? jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类) jsp更擅长表现于页面显示,servlet更擅长于逻辑控制. Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到. Jsp是…
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大家.对于这次跳槽找工作, 我准备了挺长的时间, 其中也收集了很多比较好的笔试面试题, 大都是一些常用的基础, 很多都是由于时间原因没有来得及给出答案, 但是题目大都是比较经典实用的, 现在都放到这里, 希望对正处于找工作的博友有一定的帮助. 第一部分: Java基础(此部分面试题题目来自:http:…
方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可. 下面是一个例子: public class MyThread extends Thread { int count= 1, number; public MyThread(int num) { number = num; System.out.println ("创建线程 " + number); } public void run() { wh…
原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认).多态相关!1.interface和 abstract class的区别interface是接口,abstract class是抽象类.1,语法层次抽象类中可以拥有任意范围的成员数据,可以定义非抽象方法.而接口中只能拥有静态的不能修改的成员数据,同时所有的方法必须是抽象的.所以说接口是抽象类的一种特…
更多详情点击查看,点这里!这里!!这里!!! 文末获取所有面试PDF文档! Java概述 1. 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路.方法.和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务.这种人和计算机之间交流的过程就是编程. 2. 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒…
本文由尚学堂学员们根据自己参加过的面试回忆.总结而成,一线互联网企业常见的14个Java面试题,包括各大互联网企业.创业小公司,互联网企业.传统软件公司.对于刚毕业和想要跳槽的宝宝们,再适用不过啦,赶紧拿起小本本记下来,下次面试就可以用上啦~ 01.synchronized和reentrantlock异同   相同点 都实现了多线程同步和内存可见性语义 都是可重入锁 不同点 实现机制不同 synchronized通过java对象头锁标记和Monitor对象实现 reentrantlock通过CA…
1. JDK 和 JRE 有什么区别? JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台.所有的Java 程序都要在JRE下才能运行.普通用户只需要运行已开发好的java程序,安装JRE即可. JDK(Java Development Kit)是程序开发者用来编译.调试java程序用的开发工具包.JDK的工具也是Java程序,也需要JRE才能运行.为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分.所以,在JDK的安装目录下…
这是我学习Java内部类的笔记 1.为什么使用内部类? 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现, 对于内部类都没有影响 1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性: (1).内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独. (2).在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类. (3).创建内…
面试官Q1:请说说static关键字,你在项目中是怎么使用的? static 关键字可以用来修饰:属性.方法.内部类.代码块: static 修饰的资源属于类级别,是全体对象实例共享的资源: 使用 static 修饰的属性,静态属性是在类的加载期间初始化的,使用类名.属性访问 案例说明 ①修饰成员变量 package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) { Foo…
JVM的垃圾回收机制,在内存充足的情况下,除非你显式的调用System.gc(),否则不会进行垃圾回收:在内存充足的情况下垃圾回收会自动运行. 一.引用计数算法 1.定义:引用计数算法会给对象添加一个引用计数器,每当有一个地方引用他的时候,计数器就加1:当引用失效的时候计数器值就减1.当计数器为0的时候,对象就可以被收回. 2.缺点:存在循环引用的情况,导致两个循环引用对象的内存得不到释放.目前没有一个JVM垃圾回收实现是使用这个算法的. 3.现状:主流的Java虚拟机没有使用引用计数算法来管理…
JAVA语言的特点是什么? >面向对象:两个基本概念:类和对象:三大基本特性:封装.继承.多态: >健壮性:java吸收了C/C++的优点,但是去掉了它们影响健壮性的部分,例如指针和内存申请和释放,提供了一个相对安全的访问机制 >跨平台性:因为java使用了jvm的机制,在不同的平台只要有其对于的jvm就可以运行java代码.所以可以做到"Write once,Run any where" 一个java文件中是否可以包含多个类(不是内部类)?有什么限制? 答案:以包含…
Java 基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境. 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具.简单来说:如果你需要运行 java 程序,只需安装 JRE 就…
Java String 2019-11-02  17:40:45  by冲冲 1.String的内存位置 String是定义在 java.lang 包下的一个类.它不是基本数据类型.String是不可变的. JVM使用字符串池来存储所有的字符串对象.字符串常量池存在于Java的堆内存中.(JDK1.6及以前常量池放置于方法区/永久代,JDK1.7开始放置于堆,JDK1.8方法区放置于JVM之外的本机内存) 2.问题:该段代码中有几个字符串被创建? String str = new String(…
抢占式.一个线程用完CPU之后,操作系统会根据线程优先级.线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行. 操作系统中可能会出现某条线程常常获取到VPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep(0)手动触发一次操作系统分配时间片的操作,这也是平衡CPU控制权的一种操作.…
在计算机世界,当人们谈到并发时,它的意思是一系列的任务在计算机中同时执行.如果计算机有多个处理器或者多核处理器,那么这个同时性是真实发生的:如果计算机只有一个核心处理器那么就只是表面现象. 现代所有的操作系统都允许并发地执行任务.你可以在听音乐和浏览网页新闻的同时阅读邮件,我们说这种并发是进程级别的并发.而且在同一进程内,也会同时有多种任务,这些在同一进程内运行的并发任务称之为线程. 在这里我们要讨论的是线程级并发.Java提供了Thread类,使我们能够在一个Java进程中运行多个线程,每个线…
1.开启线程的两种方式: 进程,线程: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合)而线程才是cpu上的执行单位) 1.同一个进程内的多个线程共享该进程内的地址资源 2.创建线程的开销远小于创建进程的开销(创建一个进程,就是创建一个车间,涉及到申请空间, 而且在该空间内建至少一条流水线,但创建线程,就只是在一个车间内造一条流水线,无需申请空间,所以创建开销小) # 方式1: from threading import Thread import time def sayh…
线程阻塞方式: 1.join 2.sleep 3.yield 4.改变线程的优先级 5.将线程设置成守护线程(jvm中的垃圾回收线程) 参考:https://blog.csdn.net/liyuchong2537631/article/details/51900198…
继承 Thread 类 实现 Runnable 接口 实现 Callable 接口,需要实现的是 call() 方法…
关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可: 1.List.Set.Map是否继承自Collection接口? List.Set 是,Map 不是.Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值索引访问元素的情形. 2.阐述ArrayList.Vector.LinkedList的存储性能和特性. ArrayLi…
首先我们知道Java是一门面向对象的语言 面向对象三大特性,封装.继承.多态. 封装.继承.多态 ↓ 无论是学习路线,还是众人的口语习惯,都是按照这个这样进行排序,这是有原因的.因为封装好了才能继承,封装和继承都是为多态做准备的. 多态的三个前提条件: 1.继承关系 2.方法的重写 3.向上转型(即父类引用指向子类对象) 多态又分为两种情况,编译时多态,运行时多态.先简单介绍一下这两种的区别 编译时多态:对象引用本类实例 废话不多直接上图举例: 上图我们看到cat对象和animal对象都是引用的…
什么是Java的反射? 在运行状态中,对于任意一个类,都能够知道这个类的属性和方法: 反射的作用? 如果给定一个类名,就可以通过反射机制来获取类的所有信息,也可以动态的创建对象和编译: 反射的原理? Java语言在编译之后会生成一个class文件,反射就是通过字节码文件找到其类中的方法和属性等:反射的实现主要借助以下四个类: 1.Class:类的对象: 2.Constructor:类的构造方法 3.Field:类中的属性对象 4.Method:类中的方法对象…
Java基本类型 2019-11-03  19:03:48  by冲冲 1.两个float型相减丢失精度,如何解决? 使用BigDemical装饰器模式 public class Test { public static void main(String[] args) { float a = 2.030944f; float b = 1.001085f; System.out.println(a - b);// 1.0298591 BigDecimal c = new BigDecimal(F…
“==”: ==是运算符,用来比较两个值.两个对象的内存地址是否相等: “equals()”: equals是Object类的方法,默认情况下比较两个对象是否是同一个对象,内部实现是通过“==”来实现的. 如果想比较两个对象的其他内容,则可以通过重写equals方法, 例如:String类就重写了equals方法,改成了对象的内容是否相等. 具体实现可以参考:https://www.cnblogs.com/hujinshui/p/10038044.html “hashCode()”: hashC…
1.想在运行时抛出异常,终止方法的运行 private final Set<Long> THREADS = new HashSet<>(); public void someMethod () { if (THREADS.contains(Thread.currentThread().getId())) { throw new RuntimeException("该线程不能再调用这个方法"); } THREADS.add(Thread.currentThread…
很多业务场景下需要你在一个方法中去开启一个线程,去跑一些处理时间较长的代码,这样调用方就不必经过长时间的等待了.好了 话不多说  先上代码: package test; public class ThreadTest { public static void threadTest() { new Thread(){ @Override public void run() { String name2 = Thread.currentThread().getName(); System.out.p…
更新时间:2015-08-13         来源:网络         投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文“2016最新Java笔试题集锦”,供大家阅读参考,查看更多相关笔试题目 ,请访问笔试题目频道. 今天为大家整理的是2014最新Java笔试题集锦,大家如果觉得有用的话,就收藏了吧! 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写."Model" 代表的是应用的业务逻辑(通过…
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派…