Java Doc for SelectableChannel.java in  » 6.0-JDK-Core » io-nio » java » nio » channels » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Home
Java Source Code / Java Documentation
1.6.0 JDK Core
2.6.0 JDK Modules
3.6.0 JDK Modules com.sun
4.6.0 JDK Modules com.sun.java
5.6.0 JDK Modules sun
6.6.0 JDK Platform
7.Ajax
8.Apache Harmony Java SE
9.Aspect oriented
10.Authentication Authorization
11.Blogger System
12.Build
13.Byte Code
14.Cache
15.Chart
16.Chat
17.Code Analyzer
18.Collaboration
19.Content Management System
20.Database Client
21.Database DBMS
22.Database JDBC Connection Pool
23.Database ORM
24.Development
25.EJB Server
26.ERP CRM Financial
27.ESB
28.Forum
29.Game
30.GIS
31.Graphic 3D
32.Graphic Library
33.Groupware
34.HTML Parser
35.IDE
36.IDE Eclipse
37.IDE Netbeans
38.Installer
39.Internationalization Localization
40.Inversion of Control
41.Issue Tracking
42.J2EE
43.J2ME
44.JBoss
45.JMS
46.JMX
47.Library
48.Mail Clients
49.Music
50.Net
51.Parser
52.PDF
53.Portal
54.Profiler
55.Project Management
56.Report
57.RSS RDF
58.Rule Engine
59.Science
60.Scripting
61.Search Engine
62.Security
63.Sevlet Container
64.Source Control
65.Swing Library
66.Template Engine
67.Test Coverage
68.Testing
69.UML
70.Web Crawler
71.Web Framework
72.Web Mail
73.Web Server
74.Web Services
75.Web Services apache cxf 2.2.6
76.Web Services AXIS2
77.Wiki Engine
78.Workflow Engines
79.XML
80.XML UI
Java Source Code / Java Documentation » 6.0 JDK Core » io nio » java.nio.channels 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   java.nio.channels.spi.AbstractInterruptibleChannel
      java.nio.channels.SelectableChannel

All known Subclasses:   java.nio.channels.spi.AbstractSelectableChannel,
SelectableChannel
abstract public class SelectableChannel extends AbstractInterruptibleChannel implements Channel(Code)
A channel that can be multiplexed via a Selector .

In order to be used with a selector, an instance of this class must first be registered via the SelectableChannel.register(Selector,int,Object)register method. This method returns a new SelectionKey object that represents the channel's registration with the selector.

Once registered with a selector, a channel remains registered until it is deregistered. This involves deallocating whatever resources were allocated to the channel by the selector.

A channel cannot be deregistered directly; instead, the key representing its registration must be cancelled. Cancelling a key requests that the channel be deregistered during the selector's next selection operation. A key may be cancelled explicitly by invoking its SelectionKey.cancel cancel method. All of a channel's keys are cancelled implicitly when the channel is closed, whether by invoking its Channel.close close method or by interrupting a thread blocked in an I/O operation upon the channel.

If the selector itself is closed then the channel will be deregistered, and the key representing its registration will be invalidated, without further delay.

A channel may be registered at most once with any particular selector.

Whether or not a channel is registered with one or more selectors may be determined by invoking the SelectableChannel.isRegistered isRegistered method.

Selectable channels are safe for use by multiple concurrent threads.

Blocking mode

A selectable channel is either in blocking mode or in non-blocking mode. In blocking mode, every I/O operation invoked upon the channel will block until it completes. In non-blocking mode an I/O operation will never block and may transfer fewer bytes than were requested or possibly no bytes at all. The blocking mode of a selectable channel may be determined by invoking its
SelectableChannel.isBlocking isBlocking method.

Newly-created selectable channels are always in blocking mode. Non-blocking mode is most useful in conjunction with selector-based multiplexing. A channel must be placed into non-blocking mode before being registered with a selector, and may not be returned to blocking mode until it has been deregistered.
author:
   Mark Reinhold
author:
   JSR-51 Expert Group
version:
   1.41, 07/05/05
since:
   1.4
See Also:   SelectionKey
See Also:   Selector




Constructor Summary
protected  SelectableChannel()
     Initializes a new instance of this class.

Method Summary
abstract public  ObjectblockingLock()
     Retrieves the object upon which the SelectableChannel.configureBlockingconfigureBlocking and SelectableChannel.register register methods synchronize.
abstract public  SelectableChannelconfigureBlocking(boolean block)
     Adjusts this channel's blocking mode.

If this channel is registered with one or more selectors then an attempt to place it into blocking mode will cause an IllegalBlockingModeException to be thrown.

This method may be invoked at any time.

abstract public  booleanisBlocking()
     Tells whether or not every I/O operation on this channel will block until it completes.
abstract public  booleanisRegistered()
     Tells whether or not this channel is currently registered with any selectors.
abstract public  SelectionKeykeyFor(Selector sel)
     Retrieves the key representing the channel's registration with the given selector.
abstract public  SelectorProviderprovider()
     Returns the provider that created this channel.
abstract public  SelectionKeyregister(Selector sel, int ops, Object att)
     Registers this channel with the given selector, returning a selection key.

If this channel is currently registered with the given selector then the selection key representing that registration is returned.

final public  SelectionKeyregister(Selector sel, int ops)
     Registers this channel with the given selector, returning a selection key.
abstract public  intvalidOps()
     Returns an operation set identifying this channel's supported operations.


Constructor Detail
SelectableChannel
protected SelectableChannel()(Code)
Initializes a new instance of this class.




Method Detail
blockingLock
abstract public Object blockingLock()(Code)
Retrieves the object upon which the SelectableChannel.configureBlockingconfigureBlocking and SelectableChannel.register register methods synchronize. This is often useful in the implementation of adaptors that require a specific blocking mode to be maintained for a short period of time.

The blocking-mode lock object



configureBlocking
abstract public SelectableChannel configureBlocking(boolean block) throws IOException(Code)
Adjusts this channel's blocking mode.

If this channel is registered with one or more selectors then an attempt to place it into blocking mode will cause an IllegalBlockingModeException to be thrown.

This method may be invoked at any time. The new blocking mode will only affect I/O operations that are initiated after this method returns. For some implementations this may require blocking until all pending I/O operations are complete.

If this method is invoked while another invocation of this method or of the SelectableChannel.register(Selector,int) register method is in progress then it will first block until the other operation is complete.


Parameters:
  block - If true then this channel will be placed inblocking mode; if false then it will be placednon-blocking mode This selectable channel
throws:
  ClosedChannelException - If this channel is closed
throws:
  IllegalBlockingModeException - If block is true and this channel isregistered with one or more selectors
throws:
  IOException - If an I/O error occurs



isBlocking
abstract public boolean isBlocking()(Code)
Tells whether or not every I/O operation on this channel will block until it completes. A newly-created channel is always in blocking mode.

If this channel is closed then the value returned by this method is not specified.

true if, and only if, this channel is in blocking mode



isRegistered
abstract public boolean isRegistered()(Code)
Tells whether or not this channel is currently registered with any selectors. A newly-created channel is not registered.

Due to the inherent delay between key cancellation and channel deregistration, a channel may remain registered for some time after all of its keys have been cancelled. A channel may also remain registered for some time after it is closed.

true if, and only if, this channel is registered



keyFor
abstract public SelectionKey keyFor(Selector sel)(Code)
Retrieves the key representing the channel's registration with the given selector.

The key returned when this channel was last registered with thegiven selector, or null if this channel is notcurrently registered with that selector



provider
abstract public SelectorProvider provider()(Code)
Returns the provider that created this channel. The provider that created this channel



register
abstract public SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException(Code)
Registers this channel with the given selector, returning a selection key.

If this channel is currently registered with the given selector then the selection key representing that registration is returned. The key's interest set will have been changed to ops, as if by invoking the SelectionKey.interestOps(int) interestOps(int) method. If the att argument is not null then the key's attachment will have been set to that value. A CancelledKeyException will be thrown if the key has already been cancelled.

Otherwise this channel has not yet been registered with the given selector, so it is registered and the resulting new key is returned. The key's initial interest set will be ops and its attachment will be att.

This method may be invoked at any time. If this method is invoked while another invocation of this method or of the SelectableChannel.configureBlocking(boolean) configureBlocking method is in progress then it will first block until the other operation is complete. This method will then synchronize on the selector's key set and therefore may block if invoked concurrently with another registration or selection operation involving the same selector.

If this channel is closed while this operation is in progress then the key returned by this method will have been cancelled and will therefore be invalid.


Parameters:
  sel - The selector with which this channel is to be registered
Parameters:
  ops - The interest set for the resulting key
Parameters:
  att - The attachment for the resulting key; may be null
throws:
  ClosedChannelException - If this channel is closed
throws:
  IllegalBlockingModeException - If this channel is in blocking mode
throws:
  IllegalSelectorException - If this channel was not created by the same provideras the given selector
throws:
  CancelledKeyException - If this channel is currently registered with the given selectorbut the corresponding key has already been cancelled
throws:
  IllegalArgumentException - If a bit in the ops set does not correspond to anoperation that is supported by this channel, that is, ifset & ~validOps() != 0 A key representing the registration of this channel withthe given selector



register
final public SelectionKey register(Selector sel, int ops) throws ClosedChannelException(Code)
Registers this channel with the given selector, returning a selection key.

An invocation of this convenience method of the form

sc.register(sel, ops)
behaves in exactly the same way as the invocation
sc. SelectableChannel.register(java.nio.channels.Selector,int,java.lang.Object)register (sel, ops, null)

Parameters:
  sel - The selector with which this channel is to be registered
Parameters:
  ops - The interest set for the resulting key
throws:
  ClosedChannelException - If this channel is closed
throws:
  IllegalBlockingModeException - If this channel is in blocking mode
throws:
  IllegalSelectorException - If this channel was not created by the same provideras the given selector
throws:
  CancelledKeyException - If this channel is currently registered with the given selectorbut the corresponding key has already been cancelled
throws:
  IllegalArgumentException - If a bit in ops does not correspond to an operationthat is supported by this channel, that is, if set &~validOps() != 0 A key representing the registration of this channel withthe given selector



validOps
abstract public int validOps()(Code)
Returns an operation set identifying this channel's supported operations. The bits that are set in this integer value denote exactly the operations that are valid for this channel. This method always returns the same value for a given concrete channel class.

The valid-operation set



Methods inherited from java.nio.channels.spi.AbstractInterruptibleChannel
final protected void begin()(Code)(Java Doc)
final public void close() throws IOException(Code)(Java Doc)
final protected void end(boolean completed) throws AsynchronousCloseException(Code)(Java Doc)
abstract protected void implCloseChannel() throws IOException(Code)(Java Doc)
final public boolean isOpen()(Code)(Java Doc)

Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.