QUEUEを使ってみる

戻る

::::::::::::::
QueueTest1.java
::::::::::::::
import java.util.*;
import java.util.concurrent.*;

/**
$Id: queue.html,v 1.1 2009/06/22 16:12:21 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class QueueTest1 {

    static public void main( String[] args ) {

        ArrayBlockingQueue queue = new ArrayBlockingQueue( 5 );

        for ( int i = 0;i < 10;i++ ) {
            queue.add( new Integer( i ) );

            Iterator iterator = queue.iterator();
            while ( iterator.hasNext() ) {
                System.out.print( iterator.next() );
            }
            System.out.println();
        }

    }
}
::::::::::::::
QueueTest2.java
::::::::::::::
import java.util.*;
import java.util.concurrent.*;

/**
$Id: queue.html,v 1.1 2009/06/22 16:12:21 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class QueueTest2 {

    static public void main( String[] args ) {

        ArrayBlockingQueue queue = new ArrayBlockingQueue( 5 );

        for ( int i = 0;i < 10;i++ ) {
            boolean status = queue.offer( new Integer( i ) );
            System.out.println( "status=" + status );

            System.out.print( "現在セットされている要素は、" );
            Iterator iterator = queue.iterator();
            while ( iterator.hasNext() ) {
                System.out.print( iterator.next() );
            }
            System.out.println( " です。" );
        }

    }
}
::::::::::::::
QueueTest3.java
::::::::::::::
import java.util.*;
import java.util.concurrent.*;

/**
$Id: queue.html,v 1.1 2009/06/22 16:12:21 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class QueueTest3 {

    static public void main( String[] args ) {

        final int SIZE = 5;
        ArrayBlockingQueue queue = new ArrayBlockingQueue( SIZE );

        for ( int i = 0;i < 10;i++ ) {

            if ( queue.size() == SIZE ) {
                // 要素数が最大値に達したら先頭の要素を取り除く
                try {
                    queue.take();
                } catch ( Exception e ) {
                    e.printStackTrace();
                }
            }

            // 要素を追加
            boolean status = queue.offer( new Integer( i ) );
            System.out.println( "status=" + status );

            System.out.print( "現在セットされている要素は、" );
            Iterator iterator = queue.iterator();
            while ( iterator.hasNext() ) {
                System.out.print( iterator.next() );
            }
            System.out.println( " です。" );
        }

    }
}


$ java QueueTest1
0
01
012
0123
01234
Exception in thread "main" java.lang.IllegalStateException: Queue full
        at java.util.AbstractQueue.add(Unknown Source)
        at QueueTest1.main(QueueTest1.java:16)

$ java QueueTest2
status=true
現在セットされている要素は、0 です。
status=true
現在セットされている要素は、01 です。
status=true
現在セットされている要素は、012 です。
status=true
現在セットされている要素は、0123 です。
status=true
現在セットされている要素は、01234 です。
status=false
現在セットされている要素は、01234 です。
status=false
現在セットされている要素は、01234 です。
status=false
現在セットされている要素は、01234 です。
status=false
現在セットされている要素は、01234 です。
status=false
現在セットされている要素は、01234 です。

$ java QueueTest3
status=true
現在セットされている要素は、0 です。
status=true
現在セットされている要素は、01 です。
status=true
現在セットされている要素は、012 です。
status=true
現在セットされている要素は、0123 です。
status=true
現在セットされている要素は、01234 です。
status=true
現在セットされている要素は、12345 です。
status=true
現在セットされている要素は、23456 です。
status=true
現在セットされている要素は、34567 です。
status=true
現在セットされている要素は、45678 です。
status=true
現在セットされている要素は、56789 です。

戻る inserted by FC2 system