
##目的:支线程接受 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
1 PUGE 2021-01-06 11:24:49 +08:00 wait ()必须放到 while 循环内,因为可能有虚假唤醒的可能,你这写法很容易死循环啊,推荐用 2 个 semaphore 来做,而且感觉你这需求有点不太对 |