30/09/2018, 17:41

Tạo 1 Runable object trong Java như thế này nghĩa là gì?

Cho em hỏi việc sử dụng cặp ngoặc () như bên dưới có ý nghĩa gì? Khi nào thì dùng nó?

Runnable runnable = () -> handleClientRequest(activeSocket);

handleClientRequest là hàm public static void nhận tham số là 1 đối tượng của lớp Socket.

Cương Nguyễn viết 19:44 ngày 30/09/2018

Trong java làm j có kiểu câu lệnh như trên?
Bác đang dùng IDE nào, Eclipse hay Intelji?

Mai Anh Dũng viết 19:52 ngày 30/09/2018

Chắc là Intelji

@nguyenchiemminhvu thử click chuột vào đấy xem nó có expand cái code ra không.

... viết 19:42 ngày 30/09/2018

Em học java ở java2s.com, nguyên code của nó đây ạ!
Phần Advance/Network

còn IDE thì em ít dùng Eclipse. Chỉ xem rồi code lại trên Sublime text 3 hoặc Notepad++ thôi. Biên dịch bằng javac vì đang học trên console. Em thử copy nguyên code đó vào notepad++ rồi biên dịch bằng javac vẫn ra đúng kết quả anh @ltd

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/* www .j  a  v a 2 s .co  m*/
public class Main {
  public static void main(String[] args) throws Exception {
    ServerSocket serverSocket = new ServerSocket(12900, 100,
        InetAddress.getByName("localhost"));
    System.out.println("Server started  at:  " + serverSocket);

    while (true) {
      System.out.println("Waiting for a  connection...");

      final Socket activeSocket = serverSocket.accept();

      System.out.println("Received a  connection from  " + activeSocket);
      Runnable runnable = () -> handleClientRequest(activeSocket);
      new Thread(runnable).start(); // start a new thread
    }
  }

  public static void handleClientRequest(Socket socket) {
    try{
      BufferedReader socketReader = null;
      BufferedWriter socketWriter = null;
      socketReader = new BufferedReader(new InputStreamReader(
          socket.getInputStream()));
      socketWriter = new BufferedWriter(new OutputStreamWriter(
          socket.getOutputStream()));

      String inMsg = null;
      while ((inMsg = socketReader.readLine()) != null) {
        System.out.println("Received from  client: " + inMsg);

        String outMsg = inMsg;
        socketWriter.write(outMsg);
        socketWriter.write("\n");
        socketWriter.flush();
      }
      socket.close();
    }catch(Exception e){
      e.printStackTrace();
    }

  }
}
Cương Nguyễn viết 19:45 ngày 30/09/2018

MÌnh cũng đoán là dùng Intelji, nó tự động collapse code :d, phím tắt là: ctrl + shift + Plus hoặc ctrl + shift + minus

Cương Nguyễn viết 19:50 ngày 30/09/2018

Nó lỗi typing đó, bác thay đoạn đó bằng cái này:

			Runnable runnable = new Runnable() {
				@Override
				public void run() {
					handleClientRequest(activeSocket);
				}
			};
Thành Phạm viết 19:42 ngày 30/09/2018

Runnable hình như là thread đấy ạ chắc anh làm socket multithreading nhưng mà kiểu khai báo thế kia thì ảo quá @@

Cương Nguyễn viết 19:50 ngày 30/09/2018

Collapse trong intelji đó mà :D:

Bài liên quan
0