Java常见的面试题(2)

线程的生命周期

1:创建状态 线程被新建了

2:就绪状态 调用了线程的start,表示线程可以抢占cpu,变得可运行

3:运行状态 进入了cpu运行

4:阻塞状态:等待某个条件满足,比如说锁,得到后进入就绪状态

这里线程的生命周期和操作系统中的进程大致不差,锁就是我们操作系统中说的资源,这些资源需要竞争,如果竞争得到,就从阻塞态到就绪态。

sleep wait join yield的用法和作用

1:sleep是线程Thread的方法,会使线程退出cpu,但是不会释放锁,意思就是定一个时间不让这个线程进入cpu,当时间到了就可以再竞争。

2:wait是Object中的方法,当调用了wait方法,线程会释放锁,进入等待队列,只有调用notify方法才能随机选择一个等待区的线程可以恢复,notifyAll是会让所有的等待区的方法恢复

3:yield的用法和wait差不多,只不过区别就是yield不需要进入等待队列而是还是可以竞争cpu,意思是让当前线程退出重新竞争cpu

4:join是让一个线程进入阻塞状态,加入main方法下有一个线程,调用join方法意思就是让这个线程先执行完毕后,main方法中的程序再执行。

守护线程

守护线程也是一个线程,而且保护线程不是保护某一个线程是保护所有线程,如果所有线程结束工作,保护线程才能结束工作。

怎么理解线程安全

说线程安全不如说是内存安全,大家都知道对象和线程都是在堆中的,而方法是在栈中,堆中共享空间,而栈中独享空间,所以堆中的内存是不安全的,而且用完的空间要还给操作系统,不然就会造成内存泄漏。

Theard和Runnable的使用

使用上都是用run方法创建线程,但是比较复杂的线程建议使用Theard,稍微简单的线程使用Runnable。

并发,并行,串行

并发是在同一时间段中一个程序挨个进入cpu执行,比如说时间片轮转等等,在一个时间段内,并行是多个程序一起同一时间执行,串行是等上一个程序运行完下一个才能运行,比如说先来先服务。

方法

protected Object clone ()                             //创建并返回此对象的一个副本。 
boolean equals (Object obj)                        //指示某个其他对象是否与此对象“相等”。 
protected void finalize ()                              //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 
Class<? extends Object> getClass ()         //返回一个对象的运行时类。 
int hashCode ()                                             //返回该对象的哈希码值。 
void notify ()                                                  //唤醒在此对象监视器上等待的单个线程。 
void notifyAll ()                                             //唤醒在此对象监视器上等待的所有线程。 
String toString ()                                           //返回该对象的字符串表示。 
void wait ()                                                     //导致当前的线程等待,直到其他线程调用此对象的 notify () 方法或 notifyAll () 方法。 
void wait ( long timeout)                               //导致当前的线程等待,直到其他线程调用此对象的 notify () 方法或 notifyAll () 方法,或者超过指定的时间量。 
void wait ( long timeout, int nanos)             //导致当前的线程等待,直到其他线程调用此对象的 notify () 方法或 notifyAll () 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值