Channels provide a way to connect to sources of data such as files, sockets or other structures that allow input and/or output of data. Selectors support multiplexing of non-blocking channels.