太鲜灵儿了!
package com.cxz.tools;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public abstract class TcpServer implements Runnable, Cloneable {
Thread runner = null;
ServerSocket server = null;
Socket data = null;
volatile boolean shouldStop = false;
public synchronized void startServer(int port) throws IOException {
if (runner == null) {
server = new ServerSocket(port);
runner = new Thread(this);
runner.start();
}
}
public synchronized void stopServer() {
if (server != null) {
shouldStop = true;
runner.interrupt();
runner = null;
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void run() {
if (server != null) {
while (!shouldStop) {
try {
Socket dataSocket = server.accept();
TcpServer newSocket = (TcpServer) clone();
newSocket.server = null;
newSocket.data = dataSocket;
newSocket.runner = new Thread(newSocket);
newSocket.runner.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else {
run(data);
}
}
abstract private void run(Socket socket);
public static void main(String[] args) throws IOException {
new TcpServer().startServer(8080);
}
}
分享到:
相关推荐
Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...
本书的新版本展示了如何利用Java线程工具的全部优势,并介绍了JDK 2线程接口中的最新变化。你将学习如何使用线程来提高效率,如何有效地使用它们,以及如何避免常见的错误。本书讨论了死锁、竞态条件以及饥饿等问题...
在Java编程语言中,线程是程序执行的基本单元,它允许程序同时执行多个任务。Java中的线程模型是建立在操作系统级别的线程之上的,因此,通过Java的线程机制,开发者可以充分利用多核处理器的资源,提高程序的并发性...
在这个经典例子中,我们看到两种创建线程的方式:通过继承`Thread`类和实现`Runnable`接口。 首先,我们创建了一个名为`ThreadUseExtends`的类,它直接继承自`Thread`类。这意味着这个类会拥有`Thread`的所有属性和...
根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...
Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)来管理和调度。理解并熟练掌握Java线程的创建、控制以及...
在这个例子中,创建了一个新的线程并在其run方法中调用`Thread.sleep(2000)`,主线程则继续执行,2秒后,休眠的线程结束休眠并打印出“线程结束休眠,继续执行”。 5. **线程优先级与休眠** 虽然Java提供了线程...
在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台服务。 一、线程的创建方式 Java提供了多种创建线程的方式: 1. 继承Thread类:创建一个新的类,继承...
Java程序中的多线程技术是实现并发...总的来说,这个Java程序展示了如何在并发环境中处理读写操作,是理解和实践Java多线程的一个好例子。通过学习这个程序,我们可以深入理解Java线程的使用以及并发编程中的核心概念。
在Java编程中,多线程是一个核心概念,特别是在开发高并发、高性能的应用程序时。上述代码展示了如何在Java中创建和管理多个线程。让我们深入探讨一下这个例子以及与多线程相关的知识点。 首先,创建线程主要有两种...
在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新的类,让它继承Thread类时,可以通过重写`run()`方法来定义线程执行的任务。然后创建该类的对象,并...
在Java中,线程被视为轻量级进程,与进程相似,它们拥有独立的执行控制,但不同之处在于,线程并不具备独立的存储空间,而是共享其所属进程的内存空间,这种共享机制简化了线程间的通信。 在Java内存模型中,主内存...
Java中的线程让步是一种线程协作的方式,它允许一个正在执行的线程主动放弃当前的时间片,将CPU资源让给其他线程使用。这种方式在多线程编程中有时会用到,比如当一个线程完成某项任务后,希望其他线程能够优先执行...
java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。
在Java中,线程是通过`java.lang.Thread`类或者实现`Runnable`接口来创建和管理的。这个资料包包含的是关于Java线程的中英文参考资料,包括书籍和源代码。 "Java.Threads,3rd.Edition.chm"可能是一个关于Java线程的...
在【标题】"java 多线程 控制按钮移动 例子"中,提到的是使用多线程来实现GUI(图形用户界面)中的按钮动态移动,这通常涉及到事件处理和线程同步。 【描述】提到了多线程的概念,它允许并发执行多个指令流,每个...
在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致...
在Java中,线程有两种主要的创建方式:通过继承`Thread`类和实现`Runnable`接口。本资源“java线程例子大全”包含了十八个单元的实例代码,覆盖了Java线程操作的多个方面。 1. **线程创建** - 继承`Thread`类:...
java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...
接下来的例子展示了Java中前台线程(用户线程)与后台线程(守护线程)的区别。通过调用`setDaemon(true)`,我们可以将一个线程设置为后台线程。后台线程主要用于系统级别的服务,例如垃圾回收,它们的存在是为了...