`

线程 静态代理的使用

 
阅读更多

 

 

1 静态代理模式概念和代码:

 

/**
 * 静态代理 设计模式
 * 1、真实角色
 * 2、代理角色: 持有真实角色的引用
 * 3、二者 实现相同的接口
 * 
 * @author Administrator
 *
 */
 //接口
interface Marry{
	public abstract void marry();
}


public class StaticProxy {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//创建真实角色
		Marry you =new You();
		//创建代理角色 +真实角色的引用
		WeddingCompany company =new WeddingCompany(you);
		//执行任务
		company.marry();
	}

}

//真实角色
class You implements Marry{

	@Override
	public void marry() {
		System.out.println("you and  嫦娥结婚了....");
	}
	
}
//代理角色
class WeddingCompany implements Marry{
	private Marry you;
	public WeddingCompany() {
	}
	
	public WeddingCompany(Marry you) {
		this.you = you;
	}
	private void before(){
		System.out.println("布置猪窝....");
		
	}
	private void after(){
		System.out.println("闹玉兔....");
	}
	@Override
	public void marry() {
		before(); // 代理对象的方法
		you.marry();// 使用真实对象的方法
		after();// 代理对象的方法
	}
	
}

 

 

2 线程类Thread中静态代理模式:

 

 

	Thread是代理类,在 new Thread(目标类), 
	目标类 implements Runnable
	接口 Runnable  方法run()
	
	然后在代理类的 run(){ 调用目标类.run()}

 

 

创建线程使用静态代理写法:

 

/**
 * 方便共享资源
 * @author Administrator
 *
 */
public class Web12306 implements Runnable {
	private int num =50;

	@Override
	public void run() {
		while(true){
			if(num<=0){
				break; //跳出循环
			}
			System.out.println(Thread.currentThread().getName()+"抢到了"+num--);
		}
	}
	
	public static void main(String[] args) {
		//真实角色
		Web12306 web = new Web12306();
		//代理
		Thread t1 =new Thread(web,"路人甲");
		Thread t2 =new Thread(web,"黄牛已");
		Thread t3 =new Thread(web,"攻城师");
		//启动线程
		t1.start();
		t2.start();
		t3.start();
	}
}

 

 

分享到:
评论

相关推荐

    静态代理案例---线程买票

    本案例“静态代理案例---线程买票”是一个典型的多线程应用,通过模拟售票过程,帮助我们理解如何在Java中实现线程同步与通信。 首先,我们来探讨多线程的基本概念。在单核CPU环境下,多线程并不是真正意义上的同时...

    多线程扫描代理器

    总的来说,多线程扫描代理器通过多线程技术实现高效扫描,结合代理服务器的使用,为论坛账号马甲的管理提供了一种实用且安全的解决方案。理解多线程和代理服务器的工作原理,以及如何正确使用和配置它们,对于有效...

    C#中,使用Thread新创建一个线程来查询数据库中的信息显示在控件“listView1”上,需要使用Invoke(代理名)方法来访问控件“listView1”,

    通过创建一个新的`Thread`实例,并指定线程执行的方法(通常是一个静态方法或者实例方法),可以实现多线程编程。 **示例代码片段:** ```csharp Thread thr = new Thread(Thread_dailiEvent); thr.Start(); ``` ...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    Java多线程 基础学习笔记 / 学习静态代理模式-附件资源

    Java多线程 基础学习笔记 / 学习静态代理模式-附件资源

    ip多线程验证

    在操作系统中,线程是程序执行的基本单元,每个线程都有自己的程序计数器、系统栈和局部变量,但共享同一块内存空间,包括全局变量和静态变量。多线程就是在同一程序中同时运行多个线程,它们可以并行执行不同的任务...

    C# 多线程学习入门

    在`Main`方法中,我们创建了一个新的`Thread`实例,传入`MyMethod`的`ThreadStart`代理,然后调用`Start()`来启动线程。 **线程同步与通信** 为了防止线程间的资源竞争和确保数据一致性,C#提供了多种同步机制,如...

    C#委托类的方式实现了控件无法在线程中访问

    如果需要,我们就使用`Invoke`方法,传入一个代理,该代理将调用相同的方法,但在正确的线程上下文中。如果不需要,我们就直接执行操作。 这样,我们就可以在后台线程中安全地调用这些方法来更新控件: ```csharp ...

    CWinForm多线程开发.doc

    2. **Sleep(int)**:这是一个静态方法,用来让当前线程暂停指定的毫秒数,让其他线程有机会执行。 3. **Abort()**:这个方法用于请求结束线程,但需要注意,线程并不一定会立即停止,尤其是当线程正在执行不可中断...

    基于Java多线程与设计模式的2310服务架构优化源码

    Java代码主要运用了Threadlocal、策略模式、动态代理、静态代理、单例模式(包括懒汉式、饿汉式、加锁懒汉式、双重判定锁)、volatile关键字、synchronized关键字、wait/notify/notifyAll机制、join方法来保证线程...

    Java 多线程 设计模式

    - **线程池模式**:`ThreadPoolExecutor`可以视为工厂模式和代理模式的结合,管理线程的创建和销毁,提高资源利用率。 - **读写锁模式**:`ReadWriteLock`实现了读多写少的并发策略,允许多个读线程同时访问,写...

    Java线程迁移机制的研究

    线程迁移在Java移动代理系统中用于将代理线程从一个节点转移到另一个节点,在Web包容器集群系统中则用于平衡不同节点间的负载。Java虽然提供了对象序列化等机制支持对象和代码的迁移,但由于每次迁移都从程序的起点...

    Java-JUC-多线程 进阶

    饿汉式单例模式在类加载时创建实例,懒汉式单例模式在第一次访问时创建实例,静态内部类单例模式使用静态内部类来创建实例。 万恶的反射 反射是 Java 中的一种机制,用于在运行时访问和操作类的成员变量和方法。...

    4.3、多线程consumer 访问集群 static快(两个broker)1

    总结来说,这个实验展示了在ActiveMQ中如何使用多线程消费者和静态分配策略来处理消息。多线程可以提高消息处理的并发性,而静态分配策略保证了消息在多个消费者间的公平分发。在实际应用中,根据业务需求选择合适的...

    java多线程_设计模式_各种技术(我的书架)

    此外,单例模式在多线程环境中需要考虑线程安全问题,通常采用双重检查锁定或静态内部类等方式实现。 这个资源中的"设计模式:Java语言中的应用.pdf"很可能详细阐述了如何将设计模式应用于Java编程中,包括但不限于...

    srping5.zip

    静态代理的缺点在于如果有很多接口,就需要为每个接口创建一个代理类,这可能导致代码冗余。 2. 动态代理:在运行时动态创建代理类,不需要预先知道所有代理的接口。Java提供了`java.lang.reflect.Proxy`类和`java....

    libmosquittopp 静态库

    6. **多线程支持**: C++库通常支持多线程编程,libmosquittopp也不例外,可以在多线程环境中使用,但需要正确管理和同步资源,避免竞态条件。 7. **TLS/SSL加密**: 为了确保数据传输的安全性,libmosquittopp支持...

    C#静态调用webservice

    3. **静态调用**:使用生成的代理类,我们可以静态地调用Web Service的方法。例如,如果Web Service有一个名为`GetDatabaseData`的方法,我们可以通过以下方式调用: ```csharp ServiceReference1.Service1Client....

    JAVA多线程并发下的单例模式应用

    单例模式是设计模式中比较简单的一个,也是非常常见的,但是在多线程并发的环境下使用却是不那么简单了。今天我们将分享一个在开发过程中遇到的单例模式的应用。 单例模式的定义:一个类有且仅有一个实例,并且自行...

Global site tag (gtag.js) - Google Analytics