public class Test_Main01 implements CallBack{
private static String msg;//记录子线程的话
public static void main(String[] args) {
// TODO Auto-generated method stub
//第一种:外部类实现接口
// CallBack cb=new MyCallBack(msg);
//第二种:静态内部类实现接口
// CallBack cb=new MyCallBack1();
//第三种:当前类实现接口
//CallBack cb=new Test_Main01();
//第四种:匿名内部类实现接口
CallBack cb=new CallBack() {
@Override
public void sendMsg(String str) {
// TODO Auto-generated method stub
msg=str;
System.out.println("匿名内部类实现接口:"+msg);
}
};
//创建线程并启动
MyThread thread=new MyThread(cb);
thread.start();
for(int i=1;i<11;i++)
{
System.out.println("主线程:"+i);
}
}
//使用静态内部类实现接口
private static class MyCallBack1 implements CallBack{
@Override
public void sendMsg(String str) {
// TODO Auto-generated method stub
msg=str;
System.out.println("回调:"+msg);
}
}
@Override
public void sendMsg(String str) {
// TODO Auto-generated method stub
msg=str;
System.out.println("当前类实现接口:"+msg);
}
}
public class MyThread extends Thread{
private CallBack cb;
public MyThread(CallBack cb) {
// TODO Auto-generated constructor stub
this.cb=cb;
}
@Override
public void run() {
for(char i='A';i<='Z';i++)
{
System.out.println("子线程:"+i);
}
cb.sendMsg("子线程完毕");
}
}
/**
* 线程类实现网络数据下载并将下载内容通过接口回调的形式回调到调用的地方*/
public class HttpThread extends Thread{
public interface CallBack{
void sendJSONStr(String str);
}
private CallBack callback;
public HttpThread(CallBack cb) {
// TODO Auto-generated constructor stub
callback=cb;
}
@Override
public void run() {
//OkHttp实现网络数据请求,结果为字符串
//代码……
callback.sendJSONStr("[11,22,33,44,55]");
}
}
public class MyCallBack implements CallBack{
private String msg;
public MyCallBack(String m) {
// TODO Auto-generated constructor stub
msg=m;
}
@Override
public void sendMsg(String str) {
// TODO Auto-generated method stub
msg=str;
System.out.println(msg);
}
}
//定义接口
public interface CallBack {
//创建抽象方法
void sendMsg(String str);
}