Heim Java javaLernprogramm Beispielcode zum spezifischen Arbeitsprozess von Nio

Beispielcode zum spezifischen Arbeitsprozess von Nio

Jul 03, 2017 am 11:20 AM
工作 方式 经典

 1 public void selector() throws IOException { 2     
 ByteBuffer buffer = ByteBuffer.allocate(1024); 3     
 Selector selector = Selector.open(); 4     
 ServerSocketChannel ssc = ServerSocketChannel.open(); 5     
 ssc.configureBlocking(false);//设置为非阻塞模式 6     
 ssc.socket().bind(new InetSocketAddress(8080)); 7     
 ssc.register(selector, SelectionKey.OP_ACCEPT);//注册监听事件 8     
 while(true) { 9         Set selectorKeys = selector.selectorKeys();
 //取得所有key的集合10         Iterator it = selectorKeys.iterator();11         
 while(it.hasNext()) { //检查序列是否还有元素12             
 SelectionKey key = (SelectionKey) it.next();13             
 if((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) {14                 
 ServerSocketChannel ssChannel = (ServerSocketChannel) key.channel();15                 
 SocketChannel sc = ssChannel.accept();//接受到服务端的请求16                 
 sc.configureBlocking(false);17                 
 sc.register(selector,SelectionKey.OP_ACCEPT);18                 
 it.remove();19             } 
 else if((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) {20                 
 SocketChannel sc = (SocketChannel) key.channel;21                 
 while(true) {22                     buffer.clear();23                     
 int n = sc.read(buffer);//读取数据24                     
 if(n <= 0) {25                         
 break;26                     }                     
 buffer.flip();28                 }                
 it.remove();30             }    
 }
 }
 }
Nach dem Login kopieren

  Der obige Code ist ein Codebeispiel aus dem Buch über den spezifischen Arbeitsprozess von Nio. Sein Arbeitsablauf kann im Detail wie folgt beschrieben werden:

Es gibt zwei Schlüsselklassen: Kanal und Selektor , sie sind Kernkonzepte in NIO. Der Kanal kann mit einem Transportmittel verglichen werden und ist ein bestimmtes Transportmittel wie Autos und Fahrräder. Der Selector kann mit einem Fahrzeugdispositionssystem verglichen werden, das für die Überwachung der Fahrzeugbetriebsbedingungen und spezifischer Dispositionsarbeiten verantwortlich ist.

Die serverSocketChannel-Klasse ist ein optionaler Kanal für Stream-orientierte Listening-Sockets. Nachdem eine solche Instanz auf der Serverseite erstellt wurde, ruft die Socket()-Methode (die diesem Kanal zugeordneten Informationen ab ) Server Socket) gibt eine Instanz der ServerSocket-Klasse zurück und verwendet die Methode void bind(SocketAddress endpoint) dieser Instanz, um ServerSocket an eine bestimmte Adresse (IP-Adresse und Portnummer) zu binden. So wie jedes Taxi in einem Taxiunternehmen beim Unternehmen registriert sein muss, müssen wir auch die ServerSocketChannel-Instanz über die Methode register() beim angegebenen Selektor registrieren.

Rufen Sie dann die selectedKeys-Methode von Selector auf, um zu überprüfen, ob alle auf diesem Selektor registrierten Kommunikationskanäle über die erforderlichen Ereignisse verfügen. Wenn ein Ereignis auftritt, werden alle Ereignisse zurückgegeben, da der Schlüssel vorhanden ist .readyOps() erhält den Bereitschaftsoperationssatz dieses Schlüssels. Ich persönlich denke, dass key.readyOps()&SelectionKey.OP_ACCEPT bedeutet, dass sich der Bereitschaftsoperationssatz dieses Schlüssels im ACCEPT-Zustand befindet, d. h Der Server befindet sich im Überwachungsstatus. Das Kommunikationskanalobjekt kann über die Channel-Methode dieses Objekts abgerufen werden. Anschließend wird die Methode „accept()“ aufgerufen, um einen Socket-Kanal zurückzugeben, der standardmäßig den Blockierungsstatus verwendet Durch die Channel-Methode erhaltenes Kanalobjekt zum Lesen der Kommunikationsdaten. Die hier gelesenen Daten sind Puffer, und dieser Puffer ist ein Puffer, den wir steuern können.


Das obige ist der detaillierte Inhalt vonBeispielcode zum spezifischen Arbeitsprozess von Nio. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Methoden der Zeitverarbeitung gibt es in der Go-Sprache? Welche Methoden der Zeitverarbeitung gibt es in der Go-Sprache? Jun 10, 2023 pm 09:42 PM

Als moderne Programmiersprache spielt die Go-Sprache eine wichtige Rolle in der Entwicklung. Die Go-Sprache bietet einige integrierte Zeitfunktionen und -strukturen, um die Zeitverarbeitung komfortabler zu gestalten. In diesem Artikel stellen wir einige häufig verwendete Zeitverarbeitungsmethoden in der Go-Sprache vor. time.Now() Wir können die Funktion time.Now() verwenden, um die aktuelle Zeit abzurufen: now:=time.Now()fmt.Println(now) Ausgabe: 2019-06-131

Analyse der Verantwortlichkeiten des Front-End-Ingenieurs: Was ist die Hauptaufgabe? Analyse der Verantwortlichkeiten des Front-End-Ingenieurs: Was ist die Hauptaufgabe? Mar 25, 2024 pm 05:09 PM

Analyse der Verantwortlichkeiten des Front-End-Ingenieurs: Was ist die Hauptaufgabe? Angesichts der rasanten Entwicklung des Internets spielen Front-End-Ingenieure eine sehr wichtige berufliche Rolle und spielen eine wichtige Rolle als Brücke zwischen Benutzern und Website-Anwendungen. Was machen Front-End-Ingenieure also hauptsächlich? In diesem Artikel werden die Verantwortlichkeiten von Front-End-Ingenieuren analysiert. Lassen Sie uns das herausfinden. 1. Grundlegende Verantwortlichkeiten von Front-End-Ingenieuren Website-Entwicklung und -Wartung: Front-End-Ingenieure sind für die Front-End-Entwicklung der Website verantwortlich, einschließlich des Schreibens von HTML, CSS und JavaScr der Website

Auf welche Stellen kann ich mich 2023 mit meinen Java-Kenntnissen bewerben? Auf welche Stellen kann ich mich 2023 mit meinen Java-Kenntnissen bewerben? Sep 21, 2023 am 11:41 AM

Wenn wir über Programmiersprachen und Berufe sprechen, fällt uns vor allem Java ein. Die meisten Unternehmen auf der ganzen Welt verwenden Java. Es ist beliebt und es gibt viele Jobmöglichkeiten. Wenn Sie mit Hilfe von Java-Kenntnissen im Jahr 2023 einen Job bekommen möchten, dann ist das gut für Sie, denn Java-Kenntnisse können Ihnen schnell einen Job verschaffen. Außerdem kann es Ihre Karriere schnell voranbringen. Es gibt keinen Zaubertrick, mit dem Sie schnell einen Job finden. Aber deine Fähigkeiten sind für dich wie Magie. Wählen Sie einen Job, der Sie zufriedenstellt, und ein gutes Umfeld, das Ihre Karriere erheblich bereichern kann. Wenn Sie ein Neuling sind und Erfahrung haben, bietet Ihnen Java ebenfalls einen guten Job. Viele Unternehmen nutzen Java als Hauptprogramm für ihre Entwicklung. Es

Welche Jobs kann man durch das Erlernen von Java bekommen? Welche Jobs kann man durch das Erlernen von Java bekommen? Jan 16, 2024 pm 04:58 PM

Mögliche Aufgaben: 1. Anwendungsentwicklung auf Unternehmensebene; 3. Entwicklung mobiler Anwendungen; 5. Wissenschaftliche Datenverarbeitung und künstliche Intelligenz; Entwicklung von Industrieanwendungen usw. Detaillierte Einführung: 1. Anwendungsentwicklung auf Unternehmensebene: Java nimmt eine wichtige Position in der Anwendungsentwicklung auf Unternehmensebene ein und kann zur Entwicklung großer und komplexer Systeme wie ERP, CRM usw. verwendet werden. Diese Systeme müssen normalerweise große Datenmengen verarbeiten, eine hohe Parallelität unterstützen und die Systemstabilität gewährleisten. 2. Website-Entwicklung: einschließlich Front-End und Back-End usw.

Welche Art von Job kann man bekommen, wenn man Java lernt? Welche Art von Job kann man bekommen, wenn man Java lernt? Jan 16, 2024 pm 05:18 PM

Jobs, die Sie durch das Erlernen von Java finden können: 2. Website-Entwicklung; . Softwareentwicklung und -wartung; 10. Sicherheit und Verschlüsselung; 12. Beratung; Detaillierte Einführung: 1. Java nimmt eine sehr wichtige Position in der Anwendungsentwicklung auf Unternehmensebene ein. Mit Java können verschiedene komplexe Anwendungen auf Unternehmensebene entwickelt werden, z. B. OA-Systeme.

ChatGPT und andere werden in absehbarer Zeit nicht die menschliche Arbeit übernehmen. Sie sind fehleranfällig und KI wird nicht umsonst arbeiten. ChatGPT und andere werden in absehbarer Zeit nicht die menschliche Arbeit übernehmen. Sie sind fehleranfällig und KI wird nicht umsonst arbeiten. May 21, 2023 am 08:49 AM

Die sukzessive Veröffentlichung großer Modelle wie ChatGPT hat bei vielen Menschen zu Stress und Angst geführt, dass KI bald ihren Job übernehmen wird. In diesem Zusammenhang hat OpenAI auch eine Studie veröffentlicht, die zeigt, dass die Auswirkungen von ChatGPT alle Einkommensklassen abdecken und Arbeitsplätze mit hohem Einkommen möglicherweise größeren Risiken ausgesetzt sind. Was sind die Fakten? Sollten wir alle Jobs automatisieren, auch die befriedigenden? Dies ist eine von mehreren Fragen, die kürzlich vom Future of Life Institute aufgeworfen wurden, das ein Moratorium für groß angelegte Experimente mit künstlicher Intelligenz gefordert hat und inzwischen von mehr als 10.000 Menschen unterzeichnet wurde, darunter Elon Musk, Steve Wozniak und Andrew Yang

Welche Art von Arbeit kann ich in Zukunft mit der C-Sprache erledigen? Welche Art von Arbeit kann ich in Zukunft mit der C-Sprache erledigen? Jan 29, 2024 pm 02:47 PM

Aufgaben, die die C-Sprache in Zukunft erledigen kann: 2. Spieleentwicklung; 5. Algorithmenentwicklung; 9, Bildungsbereich; 10. Datenanalyse und maschinelles Lernen; 11. Softwareentwicklung und -wartung; Detaillierte Einführung: 1. Die C-Sprache ist eine gängige Sprache für die Programmierung auf Systemebene. Sie kann zur Entwicklung von Betriebssystemen und eingebetteten Systemen verwendet werden. 2. Spieleentwicklung , usw.

Wie funktioniert der Second-Level-Cache von Hibernate? Wie funktioniert der Second-Level-Cache von Hibernate? Sep 14, 2023 pm 07:45 PM

Caching trägt dazu bei, Datenbanknetzwerkaufrufe beim Ausführen von Abfragen zu reduzieren. Cache- und Sitzungsverknüpfung der Ebene 1. Es wird implizit implementiert. Der Cache der ersten Ebene existiert, bis das Sitzungsobjekt existiert. Sobald das Sitzungsobjekt beendet/geschlossen ist, sind keine zwischengespeicherten Objekte mehr vorhanden. Der Cache der zweiten Ebene funktioniert für mehrere Sitzungsobjekte. Es ist mit der Session Factory verknüpft. Cache-Objekte der zweiten Ebene stehen allen Sitzungen über eine einzige Sitzungsfabrik zur Verfügung. Diese Cache-Objekte werden beendet, wenn eine bestimmte Sitzungsfabrik geschlossen wird. Um den Second-Level-Cache zu implementieren, müssen wir die folgenden Abhängigkeiten hinzufügen, um den Second-Level-Cache zu verwenden. <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de

See all articles