La langue est Java et la question: avoir une application d'écoute sur un port, et cette application est multithread, ayant threads conservés dans un ThreadLocals Set.Can I en ouvrant une socket pour diffuser et transférer un fichier, peut J'ouvre la douille et la livre au fil spécifique? L'application transfère déjà des objets sérialisables spécifiques de l'interface X entre les sockets.Socket Stream écriture
Répondre
Je suis d'accord avec Peter. Mais si vous reculez, validez votre conception et décidez que vous en avez vraiment besoin, je pense que vous pouvez le faire comme suit.
Vous devez ajouter à votre protocole toute indication de fil. Disons que vous appelez vos threads 1, 2, 3 etc. Ainsi, chaque commande envoyée par le client doit contenir l'ID de thread auquel elle est dédiée. Le fil d'écoute doit extraire cette valeur et soumettre la tâche à un fil spécifique. Je n'ai aucune idée si vous pouvez le faire en utilisant les pools de threads existants dont vous avez besoin. Mais pas de soucis: si votre pool de threads est simple (c'est-à-dire qu'il ne change pas dynamiquement le nombre de threads), il suffit d'écrire 10 lignes de code pour créer votre propre pool de threads: List<Thread>
et threads.add(new Thread())
.
Chaque thread doit attendre sur sa propre file d'attente de Runnable
s. Quand une nouvelle tâche arrive à Thread #n, créez simplement runnable et placez-la dans la file d'attente correspondante.
La façon la plus simple d'avoir un thread de travail est d'utiliser un ExecutorService qui est seul thread (ou une piscine si vous le souhaitez), vous pouvez lui donner des tâches avec
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() { ... });
executor.shutdown();
Je ne sais pas pourquoi vous garder Threads dans les variables ThreadLocal. Il est peut-être temps de prendre du recul par rapport à votre conception et de vous demander si vous pouvez le faire d'une manière plus simple.
Pourquoi tout le monde déteste ThreadLocals de Java? – hephestos
- 1. stream socket envoyer/recevoir des messages diffusés?
- 2. Java socket programming - stream get bloqué
- 3. Écriture d'une application serveur socket
- 4. Quelle est la différence entre un socket "stream-type" et un socket "datagramme"?
- 5. Lecture/écriture à partir d'un socket Unix en Ruby
- 6. C# stream a reçu toutes les données?
- 7. Écriture multithread de fichier
- 8. Caching stream dans C#
- 9. XBMC Video Stream
- 10. RTMP Stream bitrate alternatives
- 11. flushing input stream: java
- 12. C# Stream Design Question
- 13. Insertion Surcharge C Stream
- 14. OpenFlow :: Howto Stream Images
- 15. Simulcast a .NET Stream
- 16. Est-ce que select() Ok pour implémenter le timeout de lecture/écriture single socket?
- 17. C# socket TCP, lecture et écriture asynchrones à la "même" heure (.NET CF), comment?
- 18. Écriture d'un code de socket client asynchrone (ou asynchrone) en Java
- 19. Lecture/écriture dans une socket en utilisant un flux FILE dans c
- 20. Passer .Net Stream dans IronRuby?
- 21. JSP télécharger - application/octet-stream
- 22. file_get_contents() failed to open stream:
- 23. Stream et C++ - fichier d'analyse
- 24. Get Facebook Page Wall Stream
- 25. Facebook Live Stream Widget Statistiques
- 26. C++ équivalent de .net Stream?
- 27. GPGPU, OpenCL, CUDA, ATI Stream
- 28. SOAP to Stream to String
- 29. Paper_clip s3 - application/octet-stream?
- 30. FQL Stream Application Facebook publish_stream
Je voulais juste ajouter des âges après, que, à cause de cette idée, j'ai fait ensuite une table où j'ai suivi la communication de fil entre le client/serveur .. – hephestos