- 浏览: 276352 次
- 性别:
- 来自: 北京
最新评论
-
gotosuzhou:
好的 谢谢分享
Spring 事务异常回滚 -
cd249745647:
哈哈
Spring MVC REST 例子 -
向日葵上的小蜜蜂:
代码都差不多贴出来了,为啥不直接提供下载呢
Spring MVC REST 例子 -
he3109006290:
我猜它应该有个算法,当出现长时间处理的情况的,它自动会启动另外 ...
netty 疑惑 -
yanghoho6:
很好, 学习了,
oracle基本的索引概念.doc
import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class Server { ServerSocket serverSocket; private void initServer() throws IOException { serverSocket = new ServerSocket(); serverSocket.bind(new InetSocketAddress("localhost", 8000)); System.out.println("服务器已启动......"); } private void listenSocket() throws IOException { while (true) { Socket client = serverSocket.accept(); System.out.println("和客户端" + client.toString() + "建立连接......"); new ClientThread(client); } } public static void main(String[] args) throws IOException { Server server = new Server(); server.initServer(); server.listenSocket(); } } class ClientThread extends Thread { private static final String BYE = "bye"; private Socket socket; private DataInputStream inputStream; private DataOutputStream outputStream; BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in)); Socket client; private boolean openFlag = true; public ClientThread(Socket client) { super(); this.client = client; process(); } public void process() { try { this.inputStream = new DataInputStream(client.getInputStream()); this.outputStream = new DataOutputStream(client.getOutputStream()); // 监听System.in的输入,把输入转输入给客户 new Thread() { public void run() { while (openFlag) { try { //sysin.ready()这个很重要,先判断是否有值可读,有则读,没有这轮训 //如果一开始就用sysin.readLine那么会阻塞,导致程序如果出现异常,而不能close if (sysin.ready()) { String msg = sysin.readLine(); if (msg.toLowerCase().equals(BYE)) { shutdown(); break; } outputStream.writeUTF(msg); outputStream.flush(); } } catch (IOException e) { shutdown(); break; } } } }.start(); while (openFlag) { try { String msg = inputStream.readUTF(); System.out.println("客户端说: " + msg); } catch (IOException e) { shutdown(); break; } } } catch (IOException e) { System.out.println("连接失败"); shutdown(); } } public void shutdown() { System.out.println("关闭Clent连接"); try { if (socket != null) { socket.close(); } if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } if (sysin != null) { sysin.close(); } System.out.println("关闭Clent连接完成"); } catch (IOException e) { e.printStackTrace(); } } }
import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.Socket; public class Client { private static final String HOST = "localhost"; private static final int PORT = 8000; private static final String BYE = "bye"; private Socket socket = new Socket(); private DataInputStream inputStream; private DataOutputStream outputStream; private boolean openFlag = true; private BufferedReader sysin = new BufferedReader(new InputStreamReader( System.in)); public static void main(String[] args) { Client client = new Client(); client.doProcess(); } public void doProcess() { try { socket.connect(new InetSocketAddress(HOST, PORT)); // socket.setSoTimeout(1000); System.out.println("已经和服务器端连接....."); this.inputStream = new DataInputStream(socket.getInputStream()); this.outputStream = new DataOutputStream(socket.getOutputStream()); // 监听System.in的输入,把输入转输入给客户 new Thread() { public void run() { while (openFlag) { try { // sysin.ready()这个很重要,先判断是否有值可读,有则读,没有这轮训 // 如果一开始就用sysin.readLine那么会阻塞,导致程序如果出现异常,而不能close if (sysin.ready()) { String msg = sysin.readLine(); if (msg.toLowerCase().equals(BYE)) { shutdown(); break; } outputStream.writeUTF(msg); outputStream.flush(); } } catch (IOException e) { shutdown(); break; } } } }.start(); while (openFlag) { try { String msg = inputStream.readUTF(); System.out.println("服务端说: " + msg); } catch (IOException e) { shutdown(); break; } } } catch (IOException e) { System.out.println("连接失败"); e.printStackTrace(); shutdown(); } System.out.println("over"); } public void shutdown() { System.out.println("开始关闭连接"); openFlag = false; try { if (socket != null) { socket.close(); } if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } if (sysin != null) { sysin.close(); } System.out.println("关闭完成"); } catch (IOException e) { e.printStackTrace(); } } }
发表评论
-
自增 自减 java和c的区别
2012-03-10 15:57 1441JAVA public class Test { ... -
瞎聊系统性能优化
2012-02-19 23:46 1145一个系统中影响性能的无非就是CPU计算能力,磁盘、网络的读写能 ... -
在tomcat中,通过IP访问web系统,不需要端口号的方法(转)
2012-02-06 11:10 8885源文章地址:http://sinian.iteye.com/b ... -
java 编码
2012-02-02 18:23 1166先看一个字符串 String str = &qu ... -
javassist与classLoader
2012-02-02 15:22 4292javassist.jar是个非常 ... -
tcp 和 java socket
2011-12-31 12:52 2815tcp socket 总结点 1 ... -
netty 疑惑
2011-12-01 18:27 2703netty的nio 模式如下 一个线程Boss使用 ... -
Apache Tomcat http_proxy 连接方式配置
2011-11-02 18:03 56041、安装Tomcat ,为了使域名保持一致,在conf\Cat ... -
谈线程池
2011-10-27 12:47 1520线程池原理:用指定数 ... -
设置tomcat启动参数
2011-09-15 16:58 1524window: 在catalina.bat 文件的开始处添加如 ... -
通过反汇编class看i++和++i的区别
2011-08-17 14:32 2108public void method4() ... -
hotspot 控制参数
2011-08-17 09:25 1301文档来源于 http://www.oracle.com ... -
Spring 事务异常回滚
2011-08-16 10:10 11133先看如下代码 @Transactional ... -
java IO和NIO测试
2011-08-11 12:08 1608测试环境:cpu:Q9500 4核 频率2.83GHZ ... -
静态锁和实例锁
2011-07-28 18:21 1950Java中可以对静态方法和实例方法使用synchroni ... -
BASE64 和Dom4j
2011-07-20 09:45 1301项目当中用到MD5做消息摘要,后通过BASE64转成字符 ... -
jetty httpServer和java6内置httpServer比较
2011-07-19 12:03 3059测试情况是客户端100个线程同时同时请求10000次,服务器端 ... -
Jetty HttpClent 异常
2011-07-15 13:48 1233使用Jetty HttpClent做异步请求,结果发现这 ... -
关于Hibernate延迟加载
2011-07-14 17:42 1085package com.lottery.test; ... -
Jetty内嵌Http服务器
2011-07-14 11:13 3389本例只是以HttpServlet方式实现,更多的方式可以通过h ...
相关推荐
Java线程的优先级范围是1(`Thread.MIN_PRIORITY`)到10(`Thread.MAX_PRIORITY`),默认优先级是5(`Thread.NORM_PRIORITY`)。线程优先级越高,获取CPU资源的可能性越大,但并不能保证优先级高的线程一定会先执行...
4. **线程状态**:Java线程有五种状态:新建、可运行、运行、阻塞和死亡。了解这些状态可以帮助开发者更好地控制和调试线程。 5. **线程优先级**:每个线程都有一个优先级,Java中从1(`MIN_PRIORITY`)到10(`MAX_...
Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)来管理和调度。理解并熟练掌握Java线程的创建、控制以及...
Java线程有五种状态:新建、可运行、运行、阻塞和终止。可以通过Thread类的getState()方法查看线程状态。线程的控制包括: - sleep():使当前线程进入休眠状态,指定时间后自动唤醒。 - join():让当前线程等待另一...
### Java多线程小例子详解 #### 知识点一:基本多线程示例 在给定的代码示例中,我们首先看到的是一个简单的Java多线程应用实例。这个例子展示了如何创建并启动一个新的线程。在`ThreadDemo`类的`main`方法中,...
总的来说,理解并熟练掌握Java中的多线程同步和阻塞机制对于编写高效且线程安全的代码至关重要。通过合理使用`synchronized`、`wait()`, `notify()`和`notifyAll()`,以及高级并发工具,开发者可以构建出复杂且可靠...
根据提供的文件内容,我们可以看到一个典型的Java线程同步的例子,其中涉及到了生产者(Producer)和消费者(Consumer)模式,以及同步方法和同步代码块的使用。 知识点一:生产者消费者模式 生产者消费者模式是多...
本资源“java线程例子大全”包含了十八个单元的实例代码,覆盖了Java线程操作的多个方面。 1. **线程创建** - 继承`Thread`类:创建一个新的类,该类继承自`Thread`,然后重写`run()`方法。实例化后调用`start()`...
Java线程是多任务编程的重要组成部分,特别是在现代计算环境中,多核处理器的广泛使用使得并发执行成为提升系统性能的关键。本篇文章将详细讲解几个Java线程的实例,帮助你深入理解这一关键概念。 首先,我们需要...
### 线程的阻塞与恢复 在示例中,主程序使用`Thread.sleep()`方法让当前线程暂停执行指定时间,以便让其他线程有机会执行。 ```java try { Thread.sleep(7000); // 当前线程休眠7秒 } catch ...
Java线程在其生命周期中会经历多种状态: 1. **新状态(New)**:线程对象已创建,但尚未调用`start()`方法。 2. **可运行状态(Runnable)**:线程已准备好执行,等待CPU时间片分配。 3. **阻塞状态(Blocked)**:线程...
Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:深入ThreadLocal 一、标准例子 二、不用ThreadLocal 三、自己...
Java线程是并发编程的核心部分,它允许程序同时执行多个任务,从而提高系统效率和响应速度。在IBM的培训中,这个主题深入讲解了如何在Java中创建和管理线程,以及如何解决并发环境中可能出现的问题。 首先,让我们...
本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口...
Java线程有五种状态:新建、运行、阻塞、等待和结束。通过Thread类的getState()方法可以获取当前线程的状态。 四、线程池 Java的ExecutorService和ThreadPoolExecutor提供了一种管理线程的方式,可以控制线程的数量...
多线程能够显著提高程序的并发性和效率,尤其是在处理I/O操作、网络通信等耗时操作时,可以避免阻塞主线程,从而提升整个系统的响应速度。 多线程的优点包括: 1. **提高系统利用率**:通过多线程可以充分利用多核...
在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应速度。本示例着重探讨如何在Java中实现和管理多线程,以及它带来的挑战和解决方案。 一、Java多线程基础 1. ...
在Java编程中,多线程是并发编程的重要组成部分,它允许多个任务同时执行,从而提高应用程序的效率和响应速度。然而,多线程环境下的数据共享和操作可能会引发线程安全问题,如果不正确处理,可能导致数据不一致、...
标题和描述中并未直接提供关于Java多线程的具体例子,但是从给定的【部分内容】中我们可以提取和概括出多个关于Java多线程编程的知识点。 1. Java多线程基础概念: Java多线程是Java语言支持并发编程的一个重要...
一个常见的例子是,高优先级线程等待一个低优先级线程释放共享资源,这会导致高优先级线程被阻塞,反而降低了系统的整体效率。为了解决这些问题,Java引入了优先级队列调度策略,但这个策略并不能完全避免优先级反转...