题目
- sleep ,wait的区别
- yield和join的区别
- 线程安全
- Object类中常用的方法
- 说一下Java中常用的类,包,接口,runtimeexception
- ArrayList和Vector的区别
- Thread和Runable的区别
- 说说你对守护线程的理解
- 串行,并行和并发
- 并发的三大特性
个人理解
-
sleep ,wait的区别
1.sleep是Thread类的静态本地方法,wait是Object类的本地方法。
2.sleep方法不会释放锁,wait方法会,而且会将其加入到等待队列中。
3.sleep方法不需要被唤醒,而wait方法需要。
4.sleep不需要依赖同步锁(synchronized)wait却需要。
5.sleep一般用于当前线程休眠,而wait用于多线程通信。
6.sleep会让出cpu时间,强制上下文切换,而wait有可能重新竞争锁。
PS:sleep方法是将cpu执行资格释放出去,到了一定时间后重新取回。 -
yield和join的区别
yield方法执行后线程会马上进入就绪状态,在下一次cpu调度时,可能会重新执行该线程。join方法执行后线程会进入阻塞状态,例如t.join()方法会使主线程阻塞,等待t线程执行完后被唤醒。 -
线程安全
线程安全主要指的是内存安全。当多个线程访问一个对象时,不需要额外的操作就可以获得正确的结果,即多线程访问和单线程访问的结果是一样的,就说这是线程安全的。线程不安全的原因是因为每个进程的内存空间会有一块特殊的公共区域—堆(内存),进程内的所有线程都可以访问。 -
Object类中常用的方法
equals,toString,notify,notifyAll,wait,clone,hashcode,finalize 等等 -
说一下Java中常用的类,包,接口,runtimeexception
常用的类:String,Integer,Double,Float,bufferedwriter,bufferreader,file,filewriter,filereader。
常用的包:java.lang,java.awt,java.io,java.util,java.sql,java.xml,java.net。
常用的接口:list,map,set,nodelist,session,document。
常见的异常:ArithmeticException(除0异常),IndexOutOfBoundsException(下标越界),SQLException(操作数据库异常),IOException(IO输入输出异常),NullPointerException(空指针异常),NegativeArraySizeException(创建数组大小为负异常)。 -
ArrayList和Vector的区别
ArrayList和Vector都是基于动态数组,ArrayList都线程不安全的,Vector是线程安全的,两者在扩容时也会有区别,Vector会扩大到原来的一倍,ArrayList为0.5倍。 -
Thread和Runable的区别
Thread是类,Runable是接口,Thread类实现了Runable,复杂线程操作会用Thread,简单的会用Runable, -
说说你对守护线程的理解
守护线程会为所有非守护线程提供服务,依靠进程运行,当程序结束后会马上中断。 -
串行,并行和并发
串行当前一个任务没完成时,下一个任务只能等待。并行是多个任务轮流占用cpu,交替进行。并发是多个任务在同一时间互不干扰地执行。 -
并发的三大特性
原子性,可见性和有序性。原子性是指一个操作中,cpu不可以中途暂停,即要么不执行,要么全部执行。可见性是多个线程访问一个变量时,一个线程修改了变量,其他线程可以马上知道。有序性是指虚拟机在编译时,对于那些改变了先后顺序的代码不会改变程序结果时,虚拟机可能会改变其顺序执行(将代码重新排序)。
最后
明天还会更新的!
如果有理解不对的地方,欢迎指出。
谢谢