创建线程2--实现Runnable接口
2019-07-07 23:44 更新
静态代理
1.直接写的类实现了Runnable相当于真实角色You。
2.Thread相当于静态代理角色WeddingCompany。
3.Runnable相当于Marry接口。
/**
*
* 静态代理 设计模式
* 1.真实角色
* 2.代理角色:持有真实角色的引用。
* 3.二者实现相同的接口
*
*/
public class StaticProxy {
public static void main(String[] args) {
//创建真实角色
Marry you = new You();
//创建代理角色 + 真实角色的引用
WeddingCompany weddingCompany = new WeddingCompany(you);
//执行任务
weddingCompany.marry();
}
}
//接口
interface Marry{
public abstract void marry();
}
//真实角色
class You implements Marry{
@Override
public void marry() {
// TODO Auto-generated method stub
System.out.println("你和xxx结婚了!");
}
}
//代理角色
class WeddingCompany implements Marry{
private Marry you;
public WeddingCompany() {}
public WeddingCompany(Marry you) {
this.you = you;
}
private void before() {
System.out.println("结婚之前的准备工作。。。");
}
@Override
public void marry() {
// TODO Auto-generated method stub
before();
you.marry();
after();
}
private void after() {
System.out.println("结婚之后的收尾工作。。。");
}
}
使用实现Runnable接口的方式创建线程:
public class MyThread implements Runnable {
private int x = 30;
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0; i < 10; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized(this) {
System.out.println(Thread.currentThread().getName()+":x="+x);
x--;
}
}
}
public static void main(String[] args) {
//一个真实角色
MyThread myThread = new MyThread();
//三个代理角色
new Thread(myThread, "a").start();
new Thread(myThread, "b").start();
new Thread(myThread, "c").start();
//注意:可以有三个代理角色同时对一个对象代理,但有可能出错,需要synchronized保持同步。
}
}
推荐使用实现Runnable接口的方式创建线程:
1.java是单继承机制,但可以实现多个接口。
2.可以让多个代理同时对一个对象操作。
以上内容是否对您有帮助:
更多建议: