![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
临窗,听雨声
Java是世界上最好的语言,不是js,不是php,不是python,谢谢!
展开
-
Thread之线程的状态
一个线程从用 new 关键字和 Thread或其子类创建一个对象之后进入新生状态,然后通过调用start方法进入就绪状态,等到cpu进行调度,获取cpu之后就为运行状态,当获取的cpu一次未执行完毕,执行过程中失去了cpu,或者调用了 sleep,join,yield进入阻塞状态,如当 sleep时间过了则进入就绪状态等待获取cpu,执行完毕之后则为死亡状态如图所示...原创 2018-08-26 23:20:39 · 164 阅读 · 0 评论 -
future 设计模式
future 设计模式是一种很常见的设计模式,jdk就自带实现,Future,就是 一个线程执行之后可以获取到返回值的那个。类实现 CallAble 之后 进行线程池 submit之后返回 future对象,可以进行 get返回值。 此处自己实现一个 future设计模式的数据获取,future设计模式的好处就是 以空间换时间,获取数据的事情新开一个线程去执行,...原创 2019-05-19 00:35:55 · 280 阅读 · 0 评论 -
java使用 网络连接+RandomAccessFile + io 多线程实现多线程下载文件并显示实时网速
下载文件的时候,一个大文件切成很多片,用多线程下载,速度会快很多阅读代码的时候注意查看代码里面的注释想用多线程下载文件,则,第一:得了解 RandomAccessFile 类,这是个随机访问文件类,里面可以设置 访问的 开始地址和结束地址,且该类可读可写。RandomAccessFile out = new RandomAccessFile(file, "rw"); 则表示,该...原创 2018-09-15 14:10:57 · 2027 阅读 · 3 评论 -
网络编程之手写极简版HTTP服务器
写http服务器就得知道http协议,这个协议是基于 tcp/ip的,所以我们可以用 ServerSocket 写服务端客户端就是浏览器,浏览器其实也是通过socket 连接客户端的,一般来说浏览器请求服务器资源的时候,都会带上 请求头信息就像这样:请求头里面包含了,请求地址,请求方法,客户端语言,浏览器信息,等等,服务端使用 socket.getInputStream 可以读取到...原创 2018-09-11 00:01:00 · 725 阅读 · 0 评论 -
网络编程之 使用Socket创建聊天室
使用基于tcp协议的socket创建聊天室,昨天我写的博客已经介绍了怎么使用 ServerSocket 创建服务端,以及服务端怎么返回数据给客户端昨天写的博客有个缺陷,就是 客户端只能 先发送,后读取,对于正常情况来说应该是,客户端读取和发送是互相不相干涉的两个步骤,所以这里就得使用到多线程了,为 客户端发送数据,和接收数据各开辟一条道路。首先来看看客户端的发送消息:客户端发送消息...原创 2018-09-07 00:50:35 · 5414 阅读 · 1 评论 -
网络编程之 使用Socket创建聊天室增强版加入私聊系统消息
上一篇写了使用 socket 实现群聊的功能,但是有点缺陷比如说说话的时候没有显示是谁说的,没有私聊,之类的其实加个 客户端说话的时候是谁说的很简单,无非就是 获取当前客户端的用户名,私聊的话就是 发送给其他客户端的时候再进行限制一下,发给我指定的,比如说 @zzq:lcm 就是我对zzq说 lcm,约定 以 @ 开头,:结尾的中间的就是我们at的人。所以这里我们在new 客户端的时候就应...原创 2018-09-08 13:55:04 · 515 阅读 · 0 评论 -
Thread类之-生产者消费者模式
为了避免死锁,我们引用生产者消费者模式,就像我要筷子的时候,你就把筷子给我,我吃一口,然后你要碗的时候,我就把碗给你,你再吃一口。共享吃饭程序:我吃的时候你把筷子给我,你吃的时候我把碗给你public class CHIFAN { // 信号灯,为true 的时候我吃,你看,为false 的时候我看你吃 private boolean flag = true; /** ...原创 2018-08-29 00:34:16 · 294 阅读 · 0 评论 -
Thread类之线程的死锁
死锁,说起来大家可能都听说过,就是多个线程同步操作同一个份资源,并且都加了锁,互相不让出自己的锁,造成线程休眠,假死的现象现在我们就来看看代码,看看死锁是怎样用代码实现的举例,吃饭,吃法需要筷子和碗,碗在你手里,筷子在我手里,我说想吃饭,先把筷子给我,你说想吃饭,先把碗给我,然后我们都不给对方,就这样僵持着,就都没饭吃。筷子线程:class KUAIZI implements...原创 2018-08-28 23:55:39 · 313 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
记录一下大佬写的文章地址https://blog.csdn.net/javazejian/article/details/72828483原创 2018-08-28 15:41:16 · 253 阅读 · 0 评论 -
Thread之实现线程并获取返回值,使用实现 Callable类方法
我们使用继承Thread类,实现Runable类实现线程的时候,都面临一个问题,那就是在run方法里面无法抛异常,无法获取线程执行完后的返回值,我们需要返回值的时候怎么办呢?这个时候就需要 实现Callable接口了我们来做一个龟兔赛跑的小实验第一个,写出一个赛跑类,里面包含 赛跑者的名字,速度,是否可以跑,跑的总步数几个字段,/** * 创建赛跑类 * @author snow...原创 2018-08-23 23:04:37 · 1994 阅读 · 0 评论 -
Socket之InetAddress类和InetSocketAddress类
1.InetAddress 类封装 DNS 和 IP方法:getHostAddress() 返回ip地址getHostName() 返回域名|本机为本计算机名创建对象:InetAddress.getLocalHost();InetAddress.getByName("域名|ip");public static void main(String[] args) thro...原创 2018-08-30 22:51:29 · 2555 阅读 · 0 评论 -
Thread类之实现多线程使用 实现 Runable
之前讲了继承 Thread 类实现多线程,但是有个问题,我们都知道java里面继承都是单继承的,不能多继承,那我要是要想实现一个类后再实现线程呢,那怎么办,那就得用 实现 Runable 接口得方法了,因为我们都知道接口是可以多实现得代码如下:/** * 实现多线程之实现 Runable * @author snow * */public class RunableDemo i...原创 2018-08-22 23:22:22 · 235 阅读 · 0 评论 -
Thread之静态代理设计模式
设计模式说起来我们可能会很陌生,但是我们基本上都使用过,只是我们不知道罢了,比如说使用 BufferedOutputStream 输出的时候,里面得传入 FileOutputStram ,实际上就是装饰设计模式,就是对 FIleOutputStram 进行了装饰,功能加强了 这里我们来说说 静态代理设计模式比如说我们要租房子,自己去找太麻烦,就直接给中介来帮我们找,这样可以很方便首...原创 2018-08-22 23:10:58 · 289 阅读 · 0 评论 -
Thread启动方法之 继承 Thread 类
实现线程有几种方法,这里我们来说说 基础 Thread 类的方法直接上代码吧/** * 实现线程之继承 Thread 类 * @author snow * */public class ThreadDemo extends Thread { @Override public void run() { for (int i = 0; i < 1000; i++)...原创 2018-08-22 22:52:57 · 772 阅读 · 0 评论 -
Thread之线程基础-进程和线程的区别
了解线程之前得先了解下什么是进程,进程:操作系统 调度程序 动态线程:在进程内的多条执行路径就像之前的一个main主进程在跑,后来将一条路分成了多份,多个一起跑一个进程可以同时拥有多个进程线程和进程的详细区别如下图所示...原创 2018-08-22 22:44:38 · 206 阅读 · 0 评论 -
Thread类之join_yield_sleep方法
join 方法,合并线程,比如说在 main 方法里面调用了 thread的join,那么就是一条线程执行了,例如:public class JoinDemo implements Runnable { public static void main(String[] args) throws InterruptedException { JoinDemo joinDemo = ...原创 2018-08-26 23:50:12 · 474 阅读 · 0 评论 -
手写固定线程池
我们都知道线程池高效,是因为其节省了线程创建的资源。那么到底是怎样节省的呢?其实也很简单,就是根据给的知道线程池大小去new 多少个 Thread ,然后在 run 方法里面无限循环,从线程池的 任务队列里面获取方法执行。代码实例:import java.util.ArrayList;import java.util.Collections;import java.util.Li...原创 2019-08-09 00:27:12 · 258 阅读 · 0 评论