1:什么是线程?
轻量级的进程
2:线程的三个部分是?
处理机
代码
数据
3:为什么使用多线程
使UI响应更快
利用多处理器系统
简化建模
4:代码示例:Java中实现多线程的两种方式,包括如何定义多线程,如何使用多线程
4.1实现Runnable接口
classThread1implementsRunnable{
publicvoidrun(){
//run里一般写一个while(true)循环
System.out.println(Runnable);
}
}
4.2继承Thread
classThread2extendsThread{
publicvoidrun(){
System.out.println(extends);
}
}
publicclassTest{
publicstaticvoidmain(String[]a){
Thread1r=newThread1();
Threadt1=newThread(r);
Threadt2=newThread(r);
t1.start();
t2.start();
Threadt3=newThread2();
t3.start();
}
}
5:如何实现线程的调度?如何暂停一个线程的运行
调度用wait和notify
sleep()
6:什么是线程的优先级
判断哪个线程先执行的级别
7:简述sleep方法和wait方法的功能和区别
sleep是让线程休眠一段时间
wait是让线程挂起
8:什么是守候线程
隐藏在后台持续运行的线程
9:什么是临界资源
指多个线程共享的资源
10:什么是互斥锁,Java中如何实现
用来保证在任一时刻只能有一个线程来访问临界资源的那个标记
用在对象前面限制一段代码的执行
用在方法声明中,表示整个方法为同步方法。
11:什么是死锁?如何避免?
如果程序中有多个线程竞争多个资源,就可能会产生死锁。当一个线程等待
由另一个线程持有的锁,而后者正在等待已被第一个线程持 有的锁时,就会
发生死锁。
要避免死锁,应该确保在获取多个锁时,在所有的线程中都以相同的顺序获取锁。
尽量少用临界资源
12:简述wait和notify,notifyAll的使用
被锁定的对象可以调用wait()方法,这将导致当前线程被阻塞并放弃该对象
的互斥锁,即解除了wait()方法的当前对象的锁定状态,其 他的线程就有机
会访问该对象。
notify使等待队列上的一个线程离开阻塞状态
notifyAll使等待队列上的所有线程离开阻塞状态
13:什么是url?基本的格式是?
统一资源定位器
:port
14:简述IP,Port,TCP的基本功能
IP代表网络位置
Port代表端口号
TCP可保证不同厂家生产的计算机能在共同网络环境下运行,解决异构网通信问题,是目前网络通信的基本协议
15:简述Java网络模型的基本功能
描述服务端和客户端的连接过程
16:简述Java网络编程究竟做些什么?如何做?
1.建立连接
2.准备输出的数据,流式输出
3.流式输入,编程业务需要的格式
4.关闭连接
服务器分配一个端口号。如果客户请求一个连接,服务器使用accept()方法打开socket连接。
客户在host的port端口建立连接。
服务器和客户使用InputStream和OutputStream进行通信。
17:代码示例:基于Socket编程
try{
ServerSockets=newServerSocket(8888);
while(true){
Sockets1=s.accept();
OutputStreamos=s1.getOutputStream();
DataOutputStreamdos=newDataOutputStream(os);
dos.writeUTF("Hello,"+s1.getInetAddress()+"port#"+s1.getPort()+"\nbye!");
dos.close();
s1.close();
}
}catch(IOExceptione){
System.out.println("程序运行出错:"+e);
}
18:代码示例:基于UDP编程
19:TCP和UDP区别
TCP能保证传输内容的完整和准确,UDP不能