22. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有三种实现方法,分别为:
① 实现runnable接口,覆盖run()方法。
② 继承thread,覆盖run()方法。
③ 继承timertask,覆盖run()方法。
同步的实现是在方法前加synchronized,在调用wait()和notify()。
23. 请说出你所知道的线程同步的方法
答:1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。
2. synchronized 块:通过 synchronized关键字来声明synchronized 块。
24. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答:不可以。synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程才能获得该锁,重新进入可执行状态。
+o%PYvX/b^1e[[ 此文转贴于我的学习网IT认证全国计算机等级考试 http://www.Gzu521.com]
+o%PYvX/b^1e[
25. 用java socket编程,实现简单的echo功能
如: 客户端从键盘输入 hi (当用户输出exit 退出程序),服务端响应为 hi(服务器要求为多线程)
解:服务器程序:
import java.io.*;
import java.net.*;
public class myserver extends thread{
private socket cq ;
public myserver(socket cq)
{
this.cq = cq;
}
public void run()
{
try
{
bufferedreader in=new bufferedreader(new inputstreamreader(cq.getinputstream()));
printwriter out=new printwriter(cq.getoutputstream());
while(true)
{
string str=in.readline();
system.out.println(str);
out.println("message: "+str);
out.flush();
if(str.equals("exit"))
break;
}
}
catch(ioexception e)
{
system.out.println(e.message());
}
}
public static void main(string[] args) throws ioexception{
serversocket server=new serversocket(8009);
while(true)
{
socket s=server.accept();
new myserver(s).start();
}
}
}
客户端程序:
import java.net.*;
import java.io.*;
public class myclient{
public static void main(string[] args)throws exception
{
socket server=new socket("localhost",8009);
bufferedreader in=new bufferedreader(new inputstreamreader(server.getinputstream()));
printwriter out=new printwriter(server.getoutputstream());
bufferedreader br=new bufferedreader(new inputstreamreader(system.in));
while(true)
{
string str=br.readline();
out.println(str);
out.flush();
if(str.equals("exit")){
break;
}
system.out.println(in.readline());
}
server.close();
}
}
本文共3页:第
[1] [2] [3] 页