Runnable里面没有传参函数,所以得自己造一个
0.自定义一个接口,继承Runnable,新增一个传参方法
public interface MyRunnable extends Runnable{public MyRunnable setParam(String... param)
}
实现这个自定义接口
MyRunnable sendMessage = new MyRunnable() {String message
@Override
public MyRunnable setParam(String... param) {
message = param[0]
return this
}
@Override
public void run() {
sendMessage(message)
}
}
2.初始化线程池,运行Runnable
ExecutorService cachedThreadPool = Executors.newCachedThreadPool()cachedThreadPool.execute(sendMessage.setParam("I am service"))
如上所示,线程池调用的一个runnable实例,这个runnable实例传入了一个字符串参数
可以用Scoket套接字让服务器和客户端建立连接可以根据Scoket对象的getInputStream()和getOutputStream()获得输入输出流
再往流里面写信息
就实现了简单的数据传递
当然等待数据
的时候会有阻塞现象
所以使用线程来保证数据不会因为等待而阻塞
擦,你在Runnable实现类中定义一个有参数的方法,然后run()方法去调用该方法不就好了不就相当于run()方法传了参数,
执行方法是在线程的栈中压入方法帧,所以不存线程安全问题,速度给分
简单的很呵呵。