
多线程并发
并发多线程
ZtCling
热爱代码,欢迎交流
展开
-
多线程 守护线程
1.线程分为用户线程和守护线程2.虚拟机必须保证用户线程执行完毕3.虚拟机不用等待守护线程执行完毕例如:后台记录操作日志,监控内存,垃圾回收等等4.代码举例:package Thread;//测试守护线程、//上帝守护你public class TestDemo { public static void main(String[] args) { God god = new God(); You you = new You();原创 2022-04-08 15:56:22 · 1143 阅读 · 0 评论 -
线程安全的三大不安全案例及解决方法
1.没有排队导致线程不安全示例:不安全买票原因:每个线程都有自己的工作内存,内存控制不当会造成数据不一致(最后一张票被多个线程同时载入内存)package syn;public class UnsafeBuyTicket { public static void main(String[] args) { BuyTickey station = new BuyTickey(); new Thread(station,"我").start();原创 2022-04-08 15:22:57 · 503 阅读 · 0 评论 -
线程同步和同步方法,同步块
1.什么是线程同步?多线程操作同一个资源(例如:抢票,两个银行同时取钱)处理多线程问题时,多线程访问同一个对象(并发),并且某些线程还想修改这个对象。这个时候,我们就需要线程同步。线程同步其实就是一种等待机制,多个需要同时访问此对象进入这个对象的等待池形成队列,等待前面的线程使用完毕下一个线程再进行使用2.线程同步形成条件队列和锁(保证线程同步的安全性)3.什么是锁机制?由于同一进程的多个线程共享同一块储存空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访原创 2022-04-07 15:59:24 · 267 阅读 · 0 评论 -
多线程中的死锁
1.什么是死锁?多线程互相抱着对方需要的资源,然后形成僵持详细解释:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止的情形,某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题2.产生死锁的四个必要条件1.互斥条件:一个资源每次只能被一个进程使用2.请求与保持条件:一个进程因请求资源而堵塞时,对已经获得的资源保持不放3.不剥夺条件:进程已获得的资源,再未使用完成前,不能强行剥夺。4.原创 2022-04-07 14:09:05 · 184 阅读 · 0 评论 -
Lambda表达式
1.为什么要用lambda表达式?1.避免匿名内部类过多2.可以让你的代码看上去更加简洁3.去掉了没有意义的代码只留下了核心逻辑2.理解函数式接口(Function Interface)是学习lambda的关键所在lambda表达式前提是为函数式接口函数式接口定义:1.任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口2.对于函数式接口,我们可以通过lambda表达式来创建该接口的对象3.lambda表达式的简化:简化时,只有在一行表达式的情况下才原创 2022-04-05 15:13:13 · 118 阅读 · 0 评论 -
实现Runnable接口实现多线程(龟兔赛跑代码示例)
1.怎样实现Runnable接口实现多线程:1.创建一个类声明是实现了Runable的接口2.实现run()方法,编辑执行体3.创建线程对象,调用start()方法启动线程2.继承Thread与实现Runnable接口的区别:继承Thread启动线程:子类对象.start()实现Runnable启动线程:传入目标对象+Thread对象.start()3.比起Thread更推荐使用Runnable的原因:避免了单继承的局限性(Thread只能单继承),灵活方便,方便同一个对象,原创 2022-04-02 11:00:18 · 1709 阅读 · 0 评论 -
继承Thread类实现多线程(多线程图片下载代码示例)
1.怎样继承Thread类实现多线程:将一个类声明为Thread的子类。这个类应该重写Thread类的方法run调用start开启线程2.注意:线程开启不一定立即执行,由cpu调度执行3.继承Thread实现多线程进行图片下载导入依赖: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileup原创 2022-04-01 16:21:36 · 446 阅读 · 0 评论