下一节将要聊一下ServerSocket。并且会创建多线程的服务器,所以在这里先普及一下多线程的基础知识
1.定义任务:
编写多线程可以实现接口Runnable
package com.tcp.test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class LiftOff implements Runnable { protected int countDown = 5; private static int taskCount = 0; private final int id = taskCount++; public LiftOff(){ } public LiftOff(int countDown){ this.countDown = countDown; } public String status(){ return "#" + id + "(" + (countDown > 0 ? countDown : "liftOff") + ")"; } @Override public void run() { while(countDown-- > 0){ System.out.println(status()); // Thread.yield(); } } public static void main(String[] args) { LiftOff lo = new LiftOff(); // lo.run(); // for(int i = 0 ; i < 50 ; i++){ // System.out.println("main thread :"+i); // } System.out.println("---------------------分割线------------------------"); // Thread t = new Thread(lo); // t.start(); // for(int i = 0 ; i < 50 ; i++){ // System.out.println("main thread :"+i); // } System.out.println("---------------------分割线------------------------"); // ExecutorService exec = Executors.newCachedThreadPool(); // exec.execute(lo); // for(int i = 0 ; i < 50 ; i++){ // System.out.println("main thread :"+i); // } // exec.shutdown(); System.out.println("---------------------分割线------------------------"); // ExecutorService exec = Executors.newFixedThreadPool(3); // for(int i = 0 ; i < 5 ; i++){ // exec.execute(new LiftOff()); // } // exec.shutdown(); System.out.println("---------------------分割线------------------------"); ExecutorService exec = Executors.newSingleThreadExecutor(); for(int i = 0 ; i < 5 ; i++){ exec.execute(new LiftOff()); } for(int i = 0 ; i < 50 ; i++){ System.out.println("main thread :"+i); } exec.shutdown(); } }
代码描述:
创建了一个实现Runnable接口的类。在main中分别使用了不同的方法开启多线程。
第一种:没有开启多线程,只是调用了run方法
第二种:使用Thread.start()开启多线程
第三种:使用Executors.newCachedThreadPool()。然后调用execute开启多线程
第四种:Executors.newFixedThreadPool(3)。带有最大线程池,开启多线程
第五种:Executors.newSingleThreadExecutor();单个线程池,开启多线程。等价于Executors.newFixedThreadPool(1)
PS:最后记着调用exec.shutdown();这样才能将main线程结束掉
我们将main方法叫做主线程,Thread开启的叫做子线程。当调用start时。主线程和子线程开始并行
相关推荐
Java Socket编程是网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、基于字节流的双向通信方式。本资料包含的"Java源码:Socket编程"是一个...
Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口来实现,而 Socket 编程则...
这个学习资源可以帮助我们深入了解Java中的TCP Socket编程和多线程技术。 首先,让我们来看看TCP协议。TCP是一种面向连接的、可靠的传输协议,它保证了数据包在传输过程中的顺序和完整性。通过三次握手建立连接,四...
### 多线程Java_Socket编程示例 #### 背景与意义 在现代软件开发尤其是网络应用领域,多线程技术与Socket编程是两个非常重要的概念和技术。多线程能够有效地利用计算机资源,提高程序运行效率;而Socket编程则是...
Java TCP/IP Socket编程是网络通信领域中的核心技术,尤其在Java平台中,Socket是实现客户端与服务器之间通信的基础。原书第二版深入浅出地讲解了Java Socket编程的各个方面,为开发者提供了全面的学习资源。以下是...
通过阅读和理解这些代码,你可以更好地掌握Java中TCP Socket编程和多线程的应用。 总的来说,Java的Socket API和多线程技术相结合,使得我们可以构建健壮的、高并发的TCP服务器,以处理来自多个客户端的请求。这种...
- **多任务处理**:在并发环境中,Java的多线程机制使得服务器能够同时处理多个客户端请求。书中详细讨论了线程池和Executor接口的使用,以及如何有效地管理和调度线程。 - **NIO(非阻塞I/O)**:传统I/O模型在等待...
在Java中,Socket编程是实现网络通信的基础,它提供了进程间通信的能力,使得两个相隔万里的计算机可以通过互联网进行数据交换。本篇文章将深入讲解如何通过三步学习Java Socket编程。 **第一步:理解Socket** ...
此外,多线程技术在Java Socket编程中也非常重要。服务器端可能需要同时处理多个客户端的连接请求,这就需要使用线程来并发地处理每个连接。Java的`Thread`类或`Runnable`接口可以用于创建和管理这些并发线程。 ...
Java Socket编程是Java网络编程的重要组成部分,主要用于实现客户端与服务器之间的双向通信。在这个主题中,我们将深入探讨Java Socket的基本概念、工作原理以及如何在实际项目中应用。 首先,Socket是网络上的两个...
本篇将深入探讨Java Socket编程及其在构建聊天应用中的应用。 首先,我们要了解TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保数据包按照顺序发送,并且在接收端按顺序接收,...
总的来说,Java Socket编程是构建网络应用的基础,它涵盖了网络通信的核心原理,通过学习和实践,你可以创建自己的聊天应用或其他基于网络的项目。记住,实践是最好的老师,动手编写代码并运行测试是掌握这项技能的...
综上所述,Java QQ Server是一个利用Java的Socket网络编程技术构建的即时通信服务器,涵盖了网络连接、数据传输、多线程处理、协议解析等多个核心概念。理解并掌握这些知识点对于开发类似系统至关重要。
Socket编程是计算机网络通信中的重要概念,特别是在Java中,它为应用程序提供了低级的、面向连接的、基于字节流的通信方式。本压缩包包含的"有关socket的编程代码(简单的聊天程序)"是一个基础的Java聊天程序示例,...
### Java Socket多线程服务器源代码介绍 #### 一、Java Socket基础知识 在开始之前,我们先了解一下Java Socket的基本概念。Socket是一种用于网络通信的技术,它允许不同计算机上的应用程序通过网络进行通信。Java...
Java中的Socket编程是网络...总的来说,这个项目涵盖了网络编程基础、Java多线程技术以及基本的聊天室功能实现。通过实践这样的项目,开发者可以深入理解Socket通信机制,掌握多线程的使用,并锻炼解决实际问题的能力。
在Java或其他支持Socket编程的语言中,Socket类提供了创建和管理连接的方法。这里的"socket_socket"可能指的是Socket接口的使用和实现。 异步通信是网络编程中的一种高级策略,它允许程序在等待响应时执行其他任务...