【问题标题】:Creating a thread-safe class responsible for reordering events创建负责重新排序事件的线程安全类
【发布时间】:2015-07-25 12:05:43
【问题描述】:

我的朋友被赋予了这个暑假任务之一。他和我对如何继续完成这项任务感到非常困惑。

它说“您的类还应该在其构造函数中采用 EventConsumer 的另一个实现 将重新排序的事件传递给。”非常令人困惑,我们真的不知道它在问什么。

我们并不是在找你为我们做这件事,我们所要求的只是一些指导,我们对编程很陌生,所以请放轻松。

这是一个问题: http://postimg.org/image/snytvxvkr/

这是他们提供的课程:

Event.java

package tests.task2;

import java.util.*;


public interface Event {

    public String getEventId();

    public String getEventType();

    public Calendar getEventTimestamp();

}

EventConsumer.java

package tests.task2;

public interface EventConsumer {

    public void consumeEvent(Event theEvent);

}

【问题讨论】:

  • 这是一个普通的 Decorator 模式。您正在编写一个类,它是实现相同接口的现有实例的包装器(装饰器)。您需要将该实例传递给您的构造函数。
  • @MarkoTopolnik 我明白了,所以本质上我需要编写的类需要实现EventConsumer,所以在类的减速中我需要做的就是通过添加“实现EventConsumer”来扩展减速?但我仍然对我应该对构造函数做什么感到有些困惑。

标签: java multithreading oop thread-safety


【解决方案1】:

使用播音员框架发送 n 个消费事件。使用播音员框架,您甚至可以提供“EventConsumer”接口的多种实现。

查看here

【讨论】:

    【解决方案2】:

    “您的类还应该在其构造函数中采用 EventConsumer 的另一个实现,以将重新排序的事件传递给。” =

    public class MyEventConsumer implements EventConsumer {
    
        private EventConsumer target;
    
        public MyEventConsumer (EventConsumer target) {
            // Do something with the target.
            // probably you want to store it in an instance variable...
            this.target = target;
        }
    
        public void consumeEvent (Event event) {
            // ...so you can use it here
        }
    
    }
    

    【讨论】:

    • 肯定不是局部变量。你的意思是一个实例变量。
    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    相关资源
    最近更新 更多