这里虽然是个socket的server端的例子 但是感觉多线程蛮到位的
参考 http://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/
package com.example.an4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class Server extends Activity { private ServerSocket serverSocket; Handler updateConversationHandler; Thread serverThread = null; private TextView text; public static final int SERVERPORT = 6000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.text2); updateConversationHandler = new Handler(); //new ServerThread() 是一个ServerThread 类的实例 同时也是一个Runnable this.serverThread = new Thread(new ServerThread()); this.serverThread.start();//创建新线程 } @Override protected void onStop() { super.onStop(); try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } class ServerThread implements Runnable { public void run() { Socket socket = null; try { serverSocket = new ServerSocket(SERVERPORT); } catch (IOException e) { e.printStackTrace(); } while (!Thread.currentThread().isInterrupted()) { try { socket = serverSocket.accept(); //commThread实际上是Runnable //还可以这样Runnable commThread = new CommunicationThread(socket); CommunicationThread commThread = new CommunicationThread(socket); new Thread(commThread).start();//创建新线程 注意! handler.post(xxx)并不能创建新线程的 因为没有start } catch (IOException e) { e.printStackTrace(); } } } } class CommunicationThread implements Runnable { private Socket clientSocket; private BufferedReader input; public CommunicationThread(Socket clientSocket) { this.clientSocket = clientSocket; try { this.input = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream())); } catch (IOException e) { e.printStackTrace(); } } public void run() { while (!Thread.currentThread().isInterrupted()) { try { String read = input.readLine(); //post(Runnable r) //这里要填一个Runnable的对象 //Runnable是一个接口 怎么会有对象呢 哈哈 就是Runnable实现类的一个实例 //当然也可以用 匿名内部类的形式 Runnable read = new Runnable() {...} // 这里 read 实际上是Runnable接口的实现类的实例 updateConversationHandler.post(new updateUIThread(read)); } catch (IOException e) { e.printStackTrace(); } } } } class updateUIThread implements Runnable { private String msg; public updateUIThread(String str) { this.msg = str; } @Override public void run() { text.setText(text.getText().toString()+"Client Says: "+ msg + " "); } } }