Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Java Arrays
  • Java Strings
  • Java OOPs
  • Java Collection
  • Java 8 Tutorial
  • Java Multithreading
  • Java Exception Handling
  • Java Programs
  • Java Project
  • Java Collections Interview
  • Java Interview Questions
  • Java MCQs
  • Spring
  • Spring MVC
  • Spring Boot
  • Hibernate
Open In App
Next Article:
LinkedTransferQueue in Java
Next article icon

LinkedTransferQueue in Java

Last Updated : 20 Feb, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In Java, the LinkedTransferQueue is a part of the java.util.concurrent package and implements the TransferQueue. It is specifically designed for handling concurrent data transfers. It is a non-blocking, thread-safe, unbounded queue that supports both producer-consumer and transfer operations, making it suitable for high-performance, multi-threaded applications.

  • Most of its methods are non-blocking, offering thread-safe operations without locking.
  • It can grow dynamically to accommodate more elements without any predefined limit.
  • Optimized for high-throughput and low-latency transfers in multi-threaded environments.
  • The transfer() method allows producers to send elements directly to consumers.

Example: This example, demonstrates how to add elements to a LinkedTransferQueue and then retrieve and print them using poll() until the queue is empty.

Java
// Java Program to demonstrate the  // working of LinkedTransferQueue import java.util.concurrent.*;  public class Geeks {     public static void main(String[] args) {                  // Create a LinkedTransferQueue         LinkedTransferQueue<String> q = new LinkedTransferQueue<>();          // Add some elements to the queue         q.add("1");         q.add("2");         q.add("3");          // Print the elements of the queue         System.out.println("LinkedTransferQueue is: ");         while (!q.isEmpty()) {             System.out.print(q.poll() + " ");         }     } } 

Output
LinkedTransferQueue is:  1 2 3 


LinkedTransferQueue Hierarchy

LinkedTransferQueue-in-Java-with-Examples


Declaration of LinkedTransferQueue

In Java, the declaration of LinkedTransferQueue can be done as:

LinkedTransferQueue<Type> queue = new LinkedTransferQueue<>();

Note: Here, the Type is the type of element the queue will store(e.g String, Integer)

Constructors

Constructor

Description

LinkedTransferQueue()

This constructor is used to construct an empty queue.

LinkedTransferQueue(Collection<E> c)

This constructor is used to construct a queue with the elements of the Collection passed as the parameter.


Example 1: This example demonstrates how to create a LinkedTransferQueue add elements to it, and then copy the elements to another LinkedTransferQueue.

Java
// Java Program to demonstrates how  // to copy elements to another LinkedTransferQueue import java.util.concurrent.LinkedTransferQueue;  public class Geeks {     public static void main(String[] args) {                  // Create object of LinkedTransferQueue         LinkedTransferQueue<Integer> l = new LinkedTransferQueue<Integer>();          // Add numbers to the LinkedTransferQueue         l.add(1);         l.add(2);         l.add(3);         l.add(4);          // Print Queue 1         System.out.println("LinkedTransferQueue1: " + l);          // Create a new LinkedTransferQueue          // with the elements from the first queue         LinkedTransferQueue<Integer> l2 = new LinkedTransferQueue<Integer>(l);          // Print Queue 2         System.out.println("LinkedTransferQueue2: " + l2);     } } 

Output
LinkedTransferQueue1: [1, 2, 3, 4] LinkedTransferQueue2: [1, 2, 3, 4] 


Example 2: This example demonstrates how use various methods of LinkedTransferQueue.

Java
// Java Program to demosntrate the  // working of add(), poll() and size() method import java.util.concurrent.LinkedTransferQueue; import java.util.*;  public class Geeks {     public static void main(String[] args)             throws InterruptedException     {          // create object of LinkedTransferQueue         LinkedTransferQueue<Integer> l                 = new LinkedTransferQueue<Integer>();          // Add numbers to end of LinkedTransferQueue         // using add() method         l.add(10);         l.add(20);         l.add(30);         l.add(40);          // prints the Queue         System.out.println("LinkedTransferQueue: " + l);          // prints the size of Queue after removal         // using size() method         System.out.println("Size of LinkedTransferQueue: "                 + l.size());          // removes the front element and prints it         // using poll() method         System.out.println("First element: " + l.poll());          // prints the Queue         System.out.println("Linked Transfer Queue: " + l);          System.out.println("Size of LinkedTransferQueue: "                 + l.size());     } } 

Output
LinkedTransferQueue: [10, 20, 30, 40] Size of LinkedTransferQueue: 4 First element: 10 Linked Transfer Queue: [20, 30, 40] Size of LinkedTransferQueue: 3 

Performing Various Operations on LinkedTransferQueue

1. Adding Elements: We can use various like add(), put(), offer() method to insert element in a LinkedTransferQueue without waiting for other thread. The transfer() method waits until another thread is ready to take the element.

Example: This example demonstrates adding, offering, and transferring elements in a LinkedTransferQueue including blocking operations like put() and transfer() across thread.

Java
// Java Program to demonstrate adding // elements to LinkedTransferQueue import java.util.concurrent.*;  class Geeks {     public static void main(String[] args)     {          // Initializing the queue         LinkedTransferQueue<Integer> q                 = new LinkedTransferQueue<Integer>();          // Adding elements to this queue         for (int i = 10; i <= 14; i++)             q.add(i);          // Add the element using offer() method         System.out.println("adding 15 "                 + q.offer(15, 5, TimeUnit.SECONDS));          // Adding elements to this queue         for (int i = 16; i <= 20; i++)             q.put(i);          // Printing the elements of the queue         System.out.println(                 "The elements in the queue are:");         for (Integer i : q)             System.out.print(i + " ");          System.out.println();          // create another queue to demonstrate transfer         // method         LinkedTransferQueue<String> g                 = new LinkedTransferQueue<String>();          new Thread(new Runnable() {             public void run()             {                 try {                     System.out.println("Transferring"                             + " an element");                      // Transfer a String element                     // using transfer() method                     g.transfer("is a computer"                             + " science portal.");                     System.out.println(                             "Element "                                     + "transfer is complete");                 }                 catch (InterruptedException e1) {                     System.out.println(e1);                 }                 catch (NullPointerException e2) {                     System.out.println(e2);                 }             }         })                 .start();          try {              // Get the transferred element             System.out.println("Geeks for Geeks "                     + g.take());         }         catch (Exception e) {             System.out.println(e);         }     } } 

Output
adding 15 true The elements in the queue are: 10 11 12 13 14 15 16 17 18 19 20  Transferring an element Element transfer is complete Geeks for Geeks is a computer science portal. 


2. Remove Elements: We can use remove() method to remove an element if it is present in the queue.

Example: This example demonstrates how to remove specific element from the queue using remove() method.

Java
// Java Program to demonstrate removing // elements of LinkedTransferQueue import java.util.concurrent.LinkedTransferQueue;  class Geeks {     public static void main(String[] args)     {         // Initializing the q         LinkedTransferQueue<Integer> q             = new LinkedTransferQueue<Integer>();          // Adding elements to this q         for (int i = 1; i <= 5; i++)             q.add(i);          // Printing the elements of the q         System.out.println(             "The elements in the Queue are:");         for (Integer i : q)             System.out.print(i + " ");          // remove() method will remove the specified         // element from the q         q.remove(1);         q.remove(5);          // Printing the elements of the q         System.out.println(             "\nRemaining elements in Queue are : ");         for (Integer i : q)             System.out.print(i + " ");     } } 

Output
The elements in the Queue are: 1 2 3 4 5  Remaining elements in Queue are :  2 3 4 


3. Iterating Elements: We can use the iterator() method of LinkedTransferQueue which return an iterator that allows traversing through the elements of the queue.

Example: This example demonstrates iterating over the elements of a LinkedTransferQueue using an iterator.

Java
// Java Program to demonstrate iterating // over LinkedTransferQueue import java.util.Iterator; import java.util.concurrent.LinkedTransferQueue;  class Geeks {     public static void main(String[] args)     {         // Initializing the queue         LinkedTransferQueue<String> q                 = new LinkedTransferQueue<String>();          // Adding elements to this queue         q.add("GeeksForGeeks");         q.add("is");         q.add("fun!!");          // Returns an iterator over the elements         Iterator<String> i = q.iterator();          // Printing the elements of the queue         while (i.hasNext())             System.out.print(i.next() + " ");     } } 

Output
GeeksForGeeks is fun!! 

Methods

Methods

Description

add​(E e)Inserts the specified element at the tail of this queue.
contains​(Object o)Returns true if this queue contains the specified element.
drainTo​(Collection<? super E> c)Removes all available elements from this queue and adds them to the given collection.
drainTo​(Collection<? super E> c, int maxElements)Removes at most the given number of available elements from this queue and adds them to the given collection.
forEach​(Consumer<? super E> action)Performs the given action for each element of the Iterable until all elements have been processed or the action throws an exception.
isEmpty()Returns true if this queue contains no elements.
iterator()Returns an iterator over the elements in this queue in proper sequence.
offer​(E e)Inserts the specified element at the tail of this queue.
offer​(E e, long timeout, TimeUnit unit)Inserts the specified element at the tail of this queue.
put​(E e)Inserts the specified element at the tail of this queue.
remainingCapacity()Always returns Integer.MAX_VALUE because a LinkedTransferQueue is not capacity constrained.
remove​(Object o)Removes a single instance of the specified element from this queue, if it is present.
removeAll​(Collection<?> c)Removes all of this collection’s elements that are also contained in the specified collection (optional operation).
removeIf​(Predicate<? super E> filter)Removes all of the elements of this collection that satisfy the given predicate.
retainAll​(Collection<?> c)Retains only the elements in this collection that are contained in the specified collection (optional operation).
size()Returns the number of elements in this queue.
spliterator()Returns a Spliterator over the elements in this queue.
toArray()Returns an array containing all of the elements in this queue, in proper sequence.
toArray​(T[] a)Returns an array containing all of the elements in this queue, in proper sequence; the runtime type of the returned array is that of the specified array.
transfer​(E e)Transfers the element to a consumer, waiting if necessary to do so.
tryTransfer​(E e)Transfers the element to a waiting consumer immediately, if possible.
tryTransfer​(E e, long timeout, TimeUnit unit)Transfers the element to a consumer if it is possible to do so before the timeout elapses.

Methods Declared in Class java.util.AbstractQueue

METHOD

DESCRIPTION

addAll​(Collection<? extends E> c)Adds all of the elements in the specified collection to this queue.
clear()Removes all of the elements from this queue.
element()Retrieves, but does not remove, the head of this queue.
remove()Retrieves and removes the head of this queue.

Methods Declared in Class java.util.AbstractCollection

METHOD

DESCRIPTION

containsAll​(Collection<?> c)Returns true if this collection contains all of the elements in the specified collection.
toString()Returns a string representation of this collection.

Methods Declared in Interface java.util.concurrent.BlockingQueue

METHOD

DESCRIPTION

poll​(long timeout, TimeUnit unit)Retrieves and removes the head of this queue, waiting up to the specified wait time if necessary for an element to become available.
take()Retrieves and removes the head of this queue, waiting if necessary until an element becomes available.

Methods Declared in Interface java.util.Collection

METHOD

DESCRIPTION

addAll​(Collection<? extends E> c)Adds all of the elements in the specified collection to this collection (optional operation).
clear()Removes all of the elements from this collection (optional operation).
containsAll​(Collection<?> c)Returns true if this collection contains all of the elements in the specified collection.
equals​(Object o)Compares the specified object with this collection for equality.
hashCode()Returns the hash code value for this collection.
parallelStream()Returns a possibly parallel Stream with this collection as its source.
stream()Returns a sequential Stream with this collection as its source.
toArray​(IntFunction<T[]> generator)Returns an array containing all of the elements in this collection, using the provided generator function to allocate the returned array.

Methods Declared in Interface java.util.Queue

METHOD

DESCRIPTION

element()Retrieves, but does not remove, the head of this queue.
peek()Retrieves, but does not remove, the head of this queue, or returns null if this queue is empty.
poll()Retrieves and removes the head of this queue, or returns null if this queue is empty.
remove()Retrieves and removes the head of this queue.

Methods Declared in Interface java.util.concurrent.TransferQueue

METHOD

DESCRIPTION

getWaitingConsumerCount()Returns an estimate of the number of consumers waiting to receive elements via BlockingQueue.take() or timed poll.
hasWaitingConsumer()Returns true if there is at least one consumer waiting to receive an element via BlockingQueue.take() or timed poll.

Next Article
LinkedTransferQueue in Java

R

RishabhPrabhu
Improve
Article Tags :
  • Java
  • Java-Collections
  • Java - util package
  • Java-LinkedTransferQueue
Practice Tags :
  • Java
  • Java-Collections

Similar Reads

    LinkedTransferQueue add() method in Java
    The add() method of java.util.concurrent.LinkedTransferQueue is an in-built function in Java which is used to insert an element in this queue. Syntax: LinkedTransferQueue.add(E e) Parameters: The function accepts a single parameter e i.e. the element to be inserted. Return Value: The function return
    2 min read
    LinkedTransferQueue put() method in Java
    The java.util.concurrent.LinkedTransferQueue.put() method is an in-built function in Java which is used to insert an element in this queue. It waits till the space becomes available if queue is full. Syntax: LinkedTransferQueue.put(E e) Parameters: The function accepts a single parameter e i.e. the
    2 min read
    LinkedTransferQueue take() method in Java
    The java.util.concurrent.LinkedTransferQueue.take() method is an in-built function in Java which retrieves and remove the first element of the queue. This method also waits (if necessary) until an element becomes available. Syntax: LinkedTransferQueue.take() Parameters: The function does not accept
    2 min read
    LinkedTransferQueue poll() method in Java
    The java.util.concurrent.LinkedTransferQueue.poll() method is an in-built function in Java which retrieves and remove the head of the queue if the queue is non-empty. Syntax: LinkedTransferQueue.poll() Parameters: The function does not accept any parameter. Return Value: The function returns the hea
    2 min read
    LinkedTransferQueue size() method in Java
    The java.util.concurrent.LinkedTransferQueue.size() method is an in-built function in Java which gives the total count of the elements present in the queue. Syntax: LinkedTransferQueue.size() Parameters: The function does not accept any parameter. Return Value: The function returns the number of ele
    2 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences