notify方法通知调用了wait方法,但是尚未激活的一个线程进入线程调度队列(即进入锁竞争),注意不是立即执行。并且具体是哪一个线程不能保证。另外一点就是被唤醒的这个线程一定是在等待wait所释放的锁。
notifyAll方法则唤醒所有调用了wait方法,尚未激活的进程进入竞争队列。
(3) synchronized关键字:
第一点:synchronized用来标识一个普通方法时,表示一个线程要执行该方法,必须取得该方法所在的对象的锁。
第二点:synchronized用来标识一个静态方法时,表示一个线程要执行该方法,必须获得该方法所在的类的类锁。
第三点:synchronized修饰一个代码块。类似这样:synchronized(obj) { //code.... }。表示一个线程要执行该代码块,必须获得obj的锁。这样做的目的是减小锁的粒度,保证当不同块所需的锁不冲突时不用对整个对象加锁。利用零长度的byte数组对象做obj非常经济。
(4) atomic action(原子操作):
在JAVA中,以下两点操作是原子操作。但是c和c++中并不如此。
第一点:对引用变量和除了long和double之外的原始数据类型变量进行读写。 第二点:对所有声明为volatile的变量(包括long和double)的读写。 另外:在java.util.concurrent和java.util.concurrent.atomic包中提供了一些不依赖于同步机制的线程安全的类和方法。 19 、final,finally,finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
20 、sleep()和wait()有什么区别?
sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,wait是进入等待池等待,让出系统资源,其他线程可以占用cpu
21、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
不可以
22、当一个线程进入一个对象的一个synchronizated方法后,其他线程是否可以进入此对象的其他方法?
可以去访问非Synchronized方法。
23、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
值传递
24、创建一个class对象有几种方法?分别是什么? 1. Class c=Class.for(“java.lang.String”); 2. String str=new Stirng();
Class c=Str.getClass(); 3.Class c=String.Class;
25、如何获取一个目录下有多少个文件? File f=new File(“D://”); Int count=f.list().length;
public class FatherClass { Public FatherClass() { System.out.println(“FatherClass Create”); } public static class ChildClass extends FatherClass 26、请写出下列代码的输出结果:
} { public ChildClass() { System.out.println(“ChildClass Create”); } } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); }
FatherClass Create FatherClass Create ChildClass Create
27、请用Socket写一个客户端,并从中读出一行打印出来。 Socket socket=null; try {
socket=new Socket(\ BufferedReader
pw
=
new
BufferedReader(new
InputStreamReader(socket.getInputStream())); System.out.println(pw.readLine()); pw.close(); }
catch(Exception e)
{
e.printStackTrace(); } Finally { Try {
socket.close(); }
catch(IOException e {
e.printStackTrace(); } }
28、当一个对象不再被使用时,如何才能从内存中消失? 将该对象引用值为空
29、请写一个整数组成的矩阵转置程序,即行变成列,列变成行。 int[][] transpose(int[][] t);
int[][] transponse(int[][] t);
public int[][] transponse(int[][] t){
int [][] f=new int[t[0].length][t.length];
for(int i=0;i for(int x=0;i 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java部分(8)在线全文阅读。
相关推荐: