1. 下列说法正确的是(B D)
A 我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程
B 一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源
C synchronized可以解决可见性问题,volatile可以解决原子性问题
D ThreadLocal用于创建线程的本地变量,该变量是线程之间不共享的
笔记:
synchronized很强大,既可以保证可见性,又可以保证原子性,而volatile不能保证原子性!
2. Java多线程有几种实现方法?(A B)
A 继承Thread类
B 实现Runnable接口
C 实现Thread接口
D 以上都不正确
笔记:
多线程一共有三种实现方式
- 继承Thread类,并重写run()方法
- 实现Runnable接口,实现run()方法
- 实现Callable接口,线程结束后可以有返回值,但是该方式是依赖于线程池的。
3. 子类不能继承父类的无参构造函数。
4. JAVA程序不能依赖于垃圾回收的时间或者顺序
5. 关于HashMap和Hashtable正确的说法有(A C)
A.都实现了Map接口
B.Hashtable类不是同步的,而HashMap类是同步的
C.Hashtable不允许null键或值
D.HashMap不允许null或值
笔记:(https://blog.csdn.net/wangxing233/article/details/79452946)
Collection
-----List
-----LinkedList 非同步
----ArrayList 非同步,实现了可变大小的元素数组
----Vector 同步
-----Set 不允许有相同的元素
Map
-----HashTable 同步,实现一个key--value映射的哈希表,key和value都不允许出现null值
-----HashMap 非同步,
-----WeakHashMap 改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收
注:
- List接口中的对象按一定顺序排列,允许重复
- Set接口中的对象没有顺序,但是不允许重复
- Map接口中的对象是key、value的映射关系,key不允许重复
6. 下列说法错误的有( B C D)
A.能被java.exe成功运行的java class文件必须有main()方法
B.J2SDK就是Java API
C.Appletviewer.exe可利用jar选项运行.jar文件
D.能被Appletviewer成功运行的java class文件必须有main()方法
笔记:
B选项中 J2SDK是编程工具,不是API.
C选项中 appletviewer.exe执行选项参数中并没有jar选项。如下如所示:
D选项中 能被Appletviewer成功运行的java class文件没有main()方法。
appletviewer(小程序浏览器):一种执行HTML文件上的Java小程序类的Java浏览器,就是用来解释执行java applet应用程序的,简单理解就是没有main函数的继承applet类的 java 类。类似于WEB上开发的java类,不需要写main函数。