Java NIO系列教程(八) SocketChannel Java NIO 中的 SocketChannel 是一个连接到 TCP 网络套接字的通道。可以通过以下 2 种方式创建 SocketChannel:打开一个 SocketChannel 并连接到互联网上的某台服务器。 一个新连接到达 ServerSocketChannel 时,会创建一个 SocketChannel。一、打开 SocketChannel 下面是 SocketChannel 的打开方式: SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetS...
Java NIO系列教程(九) ServerSocketChannel Java NIO 中的 ServerSocketChannel 是一个可以监听新进来的 TCP 连接的通道, 就像标准 IO 中的 ServerSocket 一样。ServerSocketChannel 类在 java.nio.channels 包中。 这里有个例子: ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.socket().bind(new InetSocketAddress(9999));while(true){SocketChannel socketChannel = serverSo...
转自:http://www.cnblogs.com/skywang12345/p/3509960.html 本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程,线程池的5种状态是:Running, SHUTDOWN, STOP, TIDYING, TERMINATED。 线程池状态定义代码如下:private final AtomicInteger ctl = new AtomicInteger(ctlOf(RU...
转自:http://www.cnblogs.com/skywang12345/p/3509954.html 概要 在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明。内容包括:线程池示例 参考代码(基于JDK1.7.0_40) 线程池源码分析 (一) 创建“线程池” (二) 添加任务到“线程池” (三) 关闭“线程池”转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509954.html ...
转自:https://www.cnblogs.com/skywang12345/p/3509941.html 概要 在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构。线程池的实现类是ThreadPoolExecutor类。本章,我们通过分析ThreadPoolExecutor类,来了解线程池的原理。内容包括:ThreadPoolExecutor简介 ThreadPoolExecutor数据结构 线程池调度转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509941.html ThreadPoolExecutor...
转自:http://www.cnblogs.com/skywang12345/p/3509903.html 概要 前面分别介绍了"Java多线程基础"、"JUC原子类"和"JUC锁"。本章介绍JUC的最后一部分的内容——线程池。内容包括:线程池架构图 线程池示例转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509903.html 线程池架构图 线程池的架构图如下: 1. Executor 它是"执行者"接口,它是来执行任务的。准确的说,Executor提供了execute()接口来执行已提交的 Runn...
转自:http://www.cnblogs.com/skywang12345/p/3544116.html 概要 本章介绍线程池中的Callable和Future。Callable 和 Future 简介 示例和源码分析(基于JDK1.7.0_40)转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544116.html Callable 和 Future 简介Callable 和 Future 是比较有趣的一对组合。当我们需要获取线程的执行结果时,就需要用到它们。Callable用于产生结果,Future用于获取结果。 1. Callable Callable 是...
转自:http://www.cnblogs.com/skywang12345/p/3512947.html 概要 本章介绍线程池的拒绝策略。内容包括:拒绝策略介绍 拒绝策略对比和示例转载请注明出处:http://www.cnblogs.com/skywang12345/p/3512947.html 拒绝策略介绍 线程池的拒绝策略,是指当任务添加到线程池中被拒绝,而采取的处理措施。当任务添加到线程池中之所以被拒绝,可能是由于:第一,线程池异常关闭。第二,任务数量超过线程池的最大限制。 线程池共包括4种拒...
一.背景和目的 我大概是2015年开始接触Selenium这个web自动化测试框架。当时是selenium2.48好像,从Selenium2.0开始,就加入了webdriver,实际上,我们说的selenium自动化测试,大部分情况都是在使用webdriver的API。现在去Selenium官网,发现最新Selenium版本是3.4,我也不知道3.4和2.48之间有什么多大的区别和新的特性,唯一确定的是,在Selenium2.0的时候,启动后firefox的时候,还不需要额外的driver插件支持,现在到Se...
互联网上那么多设备,java 是如何与其他设备通信的呢?这次的内容是网络通信的基础,有了它咱们才能上网页、玩游戏、视频聊天。 Socket 客户端套接字 Socket 客户端套接字,用于连接互联网提供服务的设备。 Socket 构造方法构造方法 说明Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号常用方法方法名称 说明getOutputStream() 返回此...
转自:https://www.cnblogs.com/skywang12345/p/3479083.html (含部分修改) 概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括:start() 和 run()的区别说明 start() 和 run()的区别示例 start() 和 run()相关源码(基于JDK1.7.0_40)一. start() 和 run()的区别说明 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用(否则抛出异常)。 Myno...
转自:https://www.cnblogs.com/skywang12345/p/3479063.html (含部分修改) 概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable。(比如还有Callable来实现)之所以说是常用的,是因为还可以通过java.util.concurrent包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对Thread和Runnable进行了解。本章内容包括:Thread和Runnable的简介 Thread和Runnable的异同点 Thread和Runnabl...
什么是线程 在操作系统中,一个应用程序的执行实例就是进程,进程有独立的内存空间和系统资源,在任务管理器中可以看到进程。 线程是CPU调度和分派的基本单位,也是进程中执行运算的最小单位,可完成一个独立的顺序控制流程,当然一个进程中可以有多个线程。 多线程:一个进程中同时运行了多个线程,每个线程用来完成不同的工作。多个线程交替占用CPU资源,并非真正的并行执行。 使用多线程能充分利用CPU的资源,简化编程模型,带来...
集合 如何存储每天的新闻信息?每天的新闻总数是不固定的,太少浪费空间,太多空间不足。 如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用Java集合框架。 Java 集合框架提供了一套性能优良、使用方便的接口和类,位于 java.util 包中。 接口 Collection 存储一组不唯一,无序的对象,它有两个子接口 List和Set。List 接口存储一组不唯一,有序(插入顺序)的对象。Set 接口存储一组唯一,无序的对象。 ...
集合 如何存储每天的新闻信息?每天的新闻总数是不固定的,太少浪费空间,太多空间不足。 如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用Java集合框架。 Java 集合框架提供了一套性能优良、使用方便的接口和类,位于 java.util 包中。 接口 Collection 存储一组不唯一,无序的对象,它有两个子接口 List和Set。List 接口存储一组不唯一,有序(插入顺序)的对象。Set 接口存储一组唯一,无序的对象。 ...