##目的:支线程接受 socket,打断主函数的输入
支线程与主线程并行,支线程等待 Serversocket.accept(),主线程等待 Scanner.next().
现在希望支线程接收 Socket 后,中断主线程输入,继续执行支线程之后内容
##目前
需要的是 lock.wait 在同步代码块外,但是这样语法错误
如果在同步代码块中它一直执行主函数的等待输入
##主线程
Server server = new Server();
server.initServer(LockServer);
server.start();
synchronized (LockClick) {
synchronized (LockServer){
while (true) {
Menu.printMenu();
Menu.scan(LockClick,LockServer);//看作 Scanner.next()
System.out.println("----------------");
}
}}
##支线程
public void run(){
PrintWriter out=null;
Scanner get = null;
try {
System.out.println("服务正在运行,等待客户端连接!");
log.write("点对点服务端开启");
while (true) {
Socket client = server.accept();
//接收 socket,打断主线程输入
//lock.wait();
synchronized (lock) {
lock.wait();
InetAddress inetAddress = client.getInetAddress();
具体代码:https://github.com/0x00stone/chat/blob/master/src/Client1/mainThread.java https://github.com/0x00stone/chat/blob/master/src/Client1/Server.java
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.