Java心得21

来源:互联网 发布:linux下的socket编程 编辑:程序博客网 时间:2024/06/03 13:20

            今天学习了线程:   

 1、线程和进程的区别?

     线程:线程是进程内部单一的顺序控制流,一个进程拥有多个线程,多个线程共享一个进程的内存空间。
     进程:是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。
2、什么是主线程?有什么特点?
     主线程:main方法一运行,就产生了主线程。
     特点:1)最先开始   2)最后结束   3)产生其他的子线程   4)回收资源
3、线程创建有几种方式?
     两种:1)继承Thread类,重写run();     2)实现Runnable接口,实现run();
4、线程如何启动?调用start方法和直接调用run方法有什么区别
     Thread  th=new Thread();
          th.start();
     区别:调用start(),表示在主线程基础上,产生一个新的子线程,这样,子线程和主线程会交替执行。
               调用 run(),是普通方法的调用,不会产生新的线程。
5、什么是线程优先级,优先级分为几级?
     线程的优先级:当一个或多个线程同时处于就绪状态时,优先级高的线程会优先得到执行。
     优先级分为10级。
6、线程有几种状态?什么时候位于什么样的状态?
     状态:1)就绪:start启动,运行run方法时
               2)运行:执行run()时
               3)睡眠:调用线程sleep()时
               4)等待:调用Object的wait()时
               5)挂起:调用yield(),线程显示出让CPU控制权
               6)阻塞:等待IO事件输入时
               7)死亡:线程run()方法执行完毕时
7、什么是线程同步?线程同步会造成什么结果,线程同步使用什么关键字?
     线程同步:当两个或两个以上的线程同时访问同一个资源时,为了保护资源数据安全,只允许同一时间一个线程对该资源进行访问。
     结果:1)数据安全    2)效率低下
     关键词:synchronized
8、String和StringBuffer、StringBuilder的区别?
     区别:StringBuffer会在缓冲区中开辟一个空间,当对StringBuffer的内容作连接、替换、删除等操作时,不会产生新对象。StringBuilder是线程不安全的,StringBuffer是线程安全的
9、熟练掌握for each循环。
     
10、class MyThread extends Thread{
public void start(){
System.out.println("执行start");
}

public void run(){
System.out.println("执行run");
}

public static void main(String[] args){
MyThread m = new MyThread();
m.start();
}


}
     执行结果:执行start
11、说出以下代码执行结果
public static void main(String[] args) {
String s = "abcd";
StringBuffer sb = new StringBuffer("abcd");
test(s,sb);
System.out.println(s+"   "+sb);
}

public static void test(String s,StringBuffer sb){
s = s + "&&&";
sb.append("***");
}
}
     执行结果:abcd***
0 0
原创粉丝点击