多线程
文章平均质量分 86
须佐能乎!
凡事豫则立,不豫则废
展开
-
synchronized原理
1、synchronized的作用为了避免临界区的竞态条件发生,有多种手段可以达到目的。阻塞式的解决方案:synchronized,Lock 非阻塞式的解决方案:原子变量synchronized,即俗称的【对象锁】,它采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。这样就能保证拥有锁的线程可以安全的执行临界区内的代码,不用担心线程上下文切换。synchronized的三个作用原子性:确保线程互斥的访问同步代码 可见性:保证共享变量原创 2021-08-18 23:16:44 · 10134 阅读 · 8 评论 -
Java线程状态转换
1、操作系统的5种线程状态【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行【运行状态】指获取了 CPU 时间片运行中的状态 当 CPU 时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换【阻塞状态】如果调用了阻塞 API,如 BIO 读写文件,这时该线程实际不会用到 CPU,会导致线程上下文切换,进入【阻塞状态】 等 BIO 操作...原创 2021-08-10 22:15:36 · 410 阅读 · 0 评论 -
Java多线程API
目录1、创建并运行线程1.1 直接使用Thread1.2 使用Runnable配合Thread(把线程和任务进行解耦)1.3 FutureTask配合Thread(FutureTask 能够接收 Callable 类型的参数,用来处理有返回结果的情况)2、查看进程和线程的相关命令2.1 Linux命令2.2 Java命令及工具3、线程运行的原理3.1 栈与栈帧3.2 线程上下文切换(Thread Context Switch)4、Java多线程API5、sta原创 2021-08-08 22:18:47 · 633 阅读 · 0 评论 -
多线程概述
1、进程与线程进程:就是用来加载指令,管理内存,管理IO的,进程可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(比如IE浏览器可以打开多个),也有的程序只能启动一个实例进程(比如百度网盘)。当一个程序被运行,从磁盘加载这个程序的代码到内存中,这时就开启了一个进程。线程:一个进程之内可以分为一到多个线程。一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行。Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。二者区别:进程基本上相互独原创 2021-08-08 15:30:26 · 124 阅读 · 0 评论 -
TCP聊天室
用TCP实现聊天室,可多人共同聊天,也可与别人私聊。一、建立客户端和服务端二、创建客户端发送线程和接收线程,实现同时读和写三、服务端创建死循环,以实现循环接收和发送信息四、创建客户端与服务端的连接通道,不同客户端对应不同连接通道,并将不同通道放到集合list中五、在连接通道MyChannel中实现向多人聊天,比如:A客户端发送消息,A通道获取该消息msg,其他通道将此msg发送转载 2016-07-13 12:12:43 · 845 阅读 · 0 评论 -
Timer类--计时器
package com.mipo.thread;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * Timer类代表一个计时器,与每个Timer对象向对应的是原创 2016-07-02 10:57:40 · 359 阅读 · 0 评论 -
线程的创建和启动
package com.mipo.thread;/** * 进程:运行一个程序,就是启动一个进程。程序是静态的,进程是动态的。 * 单线程:同一时间内只执行一个任务。 * 多线程:同一时间内执行多个任务。 * JVM在执行多线程的程序时,在某一时刻,其实也只能运行一个线程,但JVM用划分时间间隔(时间片)的机制来转换调用各个线程 * 这个时间间隔非常短,所以,看起来像是多个线程在同时执原创 2016-06-29 23:45:44 · 280 阅读 · 0 评论 -
线程的同步(synchronized关键字)
package com.mipo.thread;/** * 线程的同步 大多数需要运行多线程的应用程序中,两个或多个线程需要共享对同一个数据的访问。 * 如果每个线程都会调用一个修改该数据状态的方法,那么这些线程将会互相影响对方的运行。 * 为了避免多个线程同时访问一个共享数据,可以通过关键字synchronized来加保护伞,保证数据的安全 * synchronized主要运用于同步原创 2016-06-29 20:00:39 · 395 阅读 · 0 评论