进程与线程的总结
1、什么是多任务处理?多任务处理有几种形式?
一个任务没有完成时,又在进行别的任务。
形式:进程和线程。
2、线程和进程的区别?
进程是一个自包含的应用程序,基于操作系统空间。每个进程都有自己独立的运行空间。每个进程一开启,都会消耗内存。
线程是进程内部的顺序控制流,是能独立运行的程序片段,多个线程共享一个进程内存空间。
3、创建线程有几种方式?如何启动线程?调用start()和调用run()的区别?
继承thread的类,重写run()方法;实现runnable接口,实现run()方法
启动线程:用start()方法。
调用start()方法,是启动线程,会在主线程之外,再在创建子线程,是多个任务同时执行。
调用run()方法,是普通方法调用,不会在主线程之外,创建子线程,是单任务处理。
4、线程有几种状态?
新建--就绪--运行--死亡
休眠、挂起、等待、阻塞
5、什么是线程优先级?分为几级?
当两个或两个以上的线程同时处于就绪状态时,优先级高的线程,会优先得到CPU的执行。 分为10级,数字越大,优先级越高
6、什么是线程同步?同步会造成什么结果?
当两个或两个以上的线程,同时访问一个对象时,为了保护数据的安全,同一时间只允许一个线程进行访问。这称为线程同步,也称为线程安全。
后果:1、数据安全 2、效率低下
7、wait和sleep的区别?
Wait()方法和sleep()方法,都能让线程暂时停止运行。但是他们使用的方式和时机是不同的。
1、sleep()方法在线程类Thread中定义,wait()方法在object中定义。
2、wait()方法只能放在同步方法或同步块中,表示当前线程对资源进行等待。Sleep方法可以放在任何位置,表示当前线程休眠。
3、wait()方法要释放对象锁,sleep()方法不会释放对象锁。
4、wait()方法使用后,线程需要notify唤醒后才能继续执行。而sleep在休眠结束后,线程自动继续执行。