栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习Java的多线程笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习Java的多线程笔记

线程与进程

进程:         是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间 线程:         是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行. 一个进程 最少有一个线程         线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分成若干个线程 同步与异步 同步 : 排队执行 , 效率低但是安全 异步 : 同时执行 , 效率高但是数据不安全 并发与并行 并发 :指两个或多个事件在 同一个时间段内 发生。 并行 :指两个或多个事件在 同一时刻 发生(同时发生) 多线程技术 Java提供的用于实现线程的类:Thread  继承Thread实现线程(抢占式运行),在创建Thread对象后需要重写   run();方法(线程要执行的任务方法,此方法不能被直接调用,通过Thread对象的start();方法来启动任务。 实现Runnable接口 同样重写run();方法 Runnable更适合多个线程同时执行相同的任务的情况,避免了单继承的局限性。 守护线程:SetDaemon(true); 线程同步(解决线程不安全) 1.同步代码块 格式:synchronized(锁对象){ } 2.同步方法 在run();方法里面添加单独的方法,方法用synchronized修饰 3.显示锁 如: Lock lock = new reentrantlock(); lock.lock();//锁 lock.unlock();//解锁 先来先到是公平锁,大家一块抢是非公平锁。 显示锁:fair参数为true就表示为公平锁 如:Lock lock = new Reentrantlock(true); 线程6种状态: new:线程刚创建未启动 Runnble:正在执行 Blocked:排队状态 Waiting:无限等待状态 Timedwaitiiong:指定时间等待状态 Trminated:结束或退出线程 线程池: 缓存线程池:newCachedThreadPool(); 定长线程池:newFixedThreadPool();括号里面传固定长度 单线程线程池:newSingleThreadExecutor(); 周期定长线程池: 1. ScheduleExecutorService s = Executors.newSsheduledThreadPool(传入固定值 如:2) Service.schedule(new Runnable(){ },时间值秒如:5,Timeunit.SECONDS); 2. 周期性执行任务: 参数1:任务 参数2:延迟时长数字(第一次执行在什么时间以后) 参数3:周期时长数字(每隔多久执行一次) 参数4:时长数字的单位 如 方法ScheduleSAtFixedRate(new Runnable () { },5,1,Timunit.SECONDS); Lambda表达式,函数式编程思想 如: Thread t = new Thread(() -> System,out,println("史蒂夫"));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298869.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号