Deferred Reference Interface for Non-Blocking Object Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Object-oriented programming environments face challenges in handling deferred references, particularly in asynchronous operations, where existing solutions like Java Future classes can block threads and force developers to write blocking algorithms, complicating code and increasing complexity.

Innovation Solution

The introduction of a deferred reference system in an object-oriented programming environment that provides a reference to an object available at a future time, allowing immediate return of the object when available, indicating unavailability, and supporting non-blocking thread operations through helpers like Ensured and Deferred types, which avoid thread blocking and enable customizable waiting semantics.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If Java Future classes are used to handle deferred references, then object availability can be tracked, but threads are blocked and code complexity increases

Engineering Contradiction:
Improveobject availability trackingVSAvoidcode complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the waiting logic into a separate Deferred helper class, dividing the system into the core Future class and the Deferred wrapper. This segmentation allows the Future class to remain simple while the Deferred class handles the complexity of non-blocking waits, callbacks, and timeout logic, thereby reducing overall code complexity while maintaining reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The Deferred class acts as an intermediary between the caller and the Future object. It mediates the interaction by wrapping the Future and providing a non-blocking interface with callback mechanisms. This intermediary absorbs the complexity of thread management and waiting logic, allowing the core Future class to remain simple while reliability is maintained through the Deferred's sophisticated waiting semantics.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If blocking algorithms are used to wait for object availability, then thread simplicity is maintained, but productivity decreases due to thread blocking

Engineering Contradiction:
Improvethread simplicityVSAvoidthread utilization
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The Deferred class introduces dynamic waiting behavior with multiple strategies: immediate non-blocking returns, timeout-based waiting, and callback-based notification. This dynamic approach allows threads to remain simple while avoiding blocking, as the waiting semantics can be adjusted based on the specific use case. The system adapts between different waiting modes rather than forcing a single blocking approach, thereby maintaining thread simplicity while improving productivity.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The Deferred class implements feedback mechanisms through callbacks that notify callers when objects become available. Instead of threads continuously checking or blocking, the system provides feedback when the desired state is reached. This feedback-driven approach allows threads to remain simple and non-blocking while maintaining high productivity, as threads are notified asynchronously rather than being occupied with waiting logic.

Inventive Principle:
Principle #23Feedback

3Adaptability or versatility

If deferred references are supported with nested structures, then versatility improves, but device complexity increases

Engineering Contradiction:
Improvenested deferred referencesVSAvoidsystem structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements nested deferred references where a Deferred can contain another Deferred, creating a nested structure that mirrors the asynchronous nature of the operations. This nesting capability provides versatility for handling complex asynchronous workflows where multiple deferred operations depend on each other. The nested structure is managed through the unified Deferred interface, which abstracts the complexity while enabling versatile composition of asynchronous operations.

Inventive Principle:
Principle #7Nested doll (Nesting)

Solution Approach 2:

The Deferred class serves multiple functions: it wraps Future objects, provides non-blocking access, implements timeout logic, supports callbacks, and enables nested structures. This multi-functionality within a single class reduces the need for separate complex structures for each function, thereby improving versatility while managing system complexity through a unified, versatile component rather than multiple specialized classes.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentEP2847670B1System and method for supporting a deferred reference to an object in an objected-oriented programming language environment
Publication Date: 2021.06.23 ORACLE INT CORP
  • EP2847670B1 patent drawingFigure 1
  • EP2847670B1 patent drawingFigure 2
  • EP2847670B1 patent drawingFigure 3

AI summary

A system and method can support a deferred reference in an object-oriented programming language environment. The object-oriented programming language environment can include an interface that can provide a deferred reference to an object that will be available at a future time. Furthermore, after receiving a request from a caller to get the object based on the deferred reference, the interface can return the object to the caller when the object is available or can indicate to the caller when the object is not currently available and/or when the object will never become available.