当前位置:编程学习 > JAVA >>

java要考试了。。

学不久,要考试了还有好多弄不懂。 想提点问题,希望知道的好心人解答啊~~ 1:在异常处理的时候,try..catch..finally.中,若有多个catch块,捕获的异常类如果有父子继承关系的话,子类的catch块要在父类的catch之前,,这是为什么?? 2:关于线程的。多线程的并发是不是就是说:看似多个线程同时运行,实际上是每个线程运行很短的时间后休息接着运行下一个(即一个时间只有一个线程在运行)。当一个线程占有分配资源时,其他线程处于等待状态?如果是的话,那要实现并发,是不是在编写时,每隔线程都要有sleep()?
补充:没有财富值啊。。不知道怎么赚啊,,不然一定赏出来啊~~~
追问:你好。谢谢您为我解答了这么多。对于第二我还是有些不懂。就是:
cpu的时间片方式,比如现在有N个线程在等待,那么cpu是不是按照它们在队伍中的顺寻依次按一定的时间间隔为他们分配资源?使得每个线程(无论优先级大小)都运行了一遍后,再继续么?

还有啊。。并发主要靠的是synchronized和锁机制,synchronized和锁机制不是为了同步么?
答案:1 如果父类的catch在子类的之前,考虑这种情况,IOException是Exception的子类,Exception(catch1)在IOException(catch2)之前,这时Try语句块出现了IOException异常,由于java是循序执行的,先经过的catch语句块是Exception,于是程序会认为被抛出的该IOException是一个Exception,就执行了该catch1,导致catch2永远不会被执行。

2 也不能这么说,如果是多核处理器,确实是多个线程同时执行的。
但在单核处理器里面,cpu的处理时按照“片”来执行,这个片不是你所关注的内容,也不是sleep()能够控制的。“每个线程运行很短的时间后休息接着运行下一个”这个指的是片。

一个线程占有资源时候,其他线程是等待状态。你可以把他们视为在执行。
并发并不是sleep()。sleep()是一个中断,起的就是个暂停的作用。

并发主要靠的是synchronized和锁机制,它的作用是,给每一个线程做一个变量的副本,使不同线程访问同一个函数的时候,其实是访问的副本,这样就不会导致多个线程同时使用同一个资源而产生混乱。

上一个:JAVA问题
下一个:java中如何实现用户输入错误,从新输入

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,