![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 54
原飞木
Java开发工程师
展开
-
implements Runnable与extends Thread 的区别
分别写了两种方式的线程,代码如下public class Threadaaa { public static void main(String args[]) throws Exception { // 多线程共享一个对象 ImplementsRunnable rc = new ImplementsRunnable(); Thread t1 = new Thread(rc);原创 2017-10-13 23:20:51 · 1438 阅读 · 0 评论 -
java tcp多人聊天室
TCP的多人聊天室上次写了一个只能两个人通信的TCP,这次写了个可以多人聊天的,利用多线程实现。设计模式:服务端:首先运行服务器,然后启动一个专门处理客户端消息的线程,然后监听是否有客户端连接,如果有人连接就单独为这个客户端开辟一个线程来处理。有多少人就开辟几个线程,并把客户端的消息放到消息集合里面,并把这些消息发送给出自己之外的其他所有人。客户端:连接服务器后就会发送一条消息给服...原创 2018-04-04 21:41:09 · 4920 阅读 · 0 评论 -
TCP实现聊天功能
最近复习了下TCP,写了个聊天demo服务端:import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.ServerS...原创 2018-03-29 15:33:04 · 1250 阅读 · 2 评论 -
多线程之争用条件
什么是争用条件?当多个线程同时访问同一数据(内存区域)时,每个线程都尝试操作改数据,从而导致数据被破坏(corrupted),这种现象称为争用条件。下面用一个案例来说明。案例:100个人之间进行相互转账,每个人都有一张银行卡,卡里1000元。在转账的时候都由银行的系统来操作。银行系统:package com.smxy.people;/** * * @Descript...原创 2018-04-23 14:34:49 · 2078 阅读 · 0 评论 -
Java基础之线程
1.线程的生命周期2.线程的调度方式通过分时和抢占来完成的同优先级线程组成先进先出队列(先到先服务),使用时间片策略对高优先级,使用优先调度的抢占式策略3.线程的创建方式(1)继承Thread类(2)实现Runnable接口区别:继承Thread: 线程代码存放Thread子类run方法中 实现Runnable:线程代码存在接...原创 2018-05-07 20:57:47 · 1149 阅读 · 0 评论 -
synchronized静态方法与非静态方法
一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized。我们需要先弄清楚synchronized 在类方法上使用的两个关键点。1.非静态方法的锁默认为 this,也就是我们所说的对象锁, 静态方法的锁为 对应的 ...原创 2018-08-05 14:27:13 · 2851 阅读 · 0 评论 -
Java之volatile关键字
volatile 关键字:当多个线程进行操作共享数据时,可以保证内存中的数据可见。 相较于 synchronized 是一种较为轻量级的同步策略。缺点:1. volatile 不具备“互斥性”2. volatile 不能保证变量的“原子性”内存可见性是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。...原创 2018-08-02 10:44:35 · 2082 阅读 · 3 评论 -
Callable,Lock,Condition,ReadWriteLock
Callable接口Java5.0在java.util.concurrent提供了一个新的创建执行线程的方式:Callable接口Callable接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是Runnable不会返回结果,并且无法抛出经过检查的异常。Callable需要依赖FutureTask,FutureTask也可以用作闭锁。imp...原创 2018-11-08 11:55:52 · 917 阅读 · 0 评论 -
Java并发之CountDownLatch
CountDownLatchCountDownLatch是java多线程包concurrent里的一个常见工具类,通过使用它可以借助线程能力极大提升处理响应速度,且实现方式非常优雅。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以...原创 2019-07-16 22:40:12 · 923 阅读 · 0 评论