Java随笔---多线程
佛系睡收
选对了方向就成功了一半。
(项目是以交付投产为目标,产品是以稳定、高效、扩展为宗旨)
展开
-
多线程学习总结(十一)——线程安全之线程间的通信notify和notifyAll
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 关于notify和notifyAll这两个方法的区别从方法的命名上就能看出来,一个是唤醒在对象上等待的一个阻塞线程,一个是唤醒在对象上等待的所有线程。再多数情况下我们习惯性的使用notifyAll方法,因为能保证不出错,而使用了notify方法可能在没有考虑清楚的情况下就让所原创 2016-10-22 16:27:10 · 476 阅读 · 0 评论 -
多线程学习总结(八)——线程安全之“”锁“”
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 上一篇提到的共享变量问题因为,可见性以及原子性问题,出现了共享变量的使用错误,这里和大家说下解决办法,就是加锁。顾名思义,有锁肯定要有钥匙,在java中可以理解为每把锁都只配了一把钥匙,理解加锁的机制我给大家举个例子。有一个上锁的房间,房间门口放着钥匙(假设进出房间都要用钥匙原创 2016-10-07 11:50:30 · 528 阅读 · 0 评论 -
多线程学习总结(一)——认识多线程
我关于多线程的学习都是通过直接在网上查找资料,查看相关视频,进行学习的,在这之前我是一点都没接触过多线程,而唯一看到的多线程代码也是再项目中看到了别人写的多线程代码,那时想要写一个和多线程相关的代码基本是一模一样的仿照着写,出了一点问题也搞不懂问题在哪里。所以就一直迷迷糊糊了一段时间,后来感觉有必要把这块搞懂,就自己慢慢的找资料学习了。废话就讲这么多,其实要学习多线程相关的,首先要搞清楚一个概念,原创 2016-10-04 14:35:42 · 335 阅读 · 0 评论 -
多线程学习总结(七)——线程安全之共享变量
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 在并发编程中,通常要注意三个问题:原子性问题、可见性问题、有序性问题,关于这三个问题的详细解释,可参考:http://www.cnblogs.com/dolphin0520/p/3920373.html对这三个有个基本的了解之后,再来讨论共享变量的问题,共享变量分为2种情况(我原创 2016-10-06 16:52:38 · 570 阅读 · 0 评论 -
多线程学习总结(六)——实现多线程的方法之Fork/Join
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 在项目开发中,很容易碰到多个任务同时进行,而在执行这些任务时,因为各个原因导致执行速度而不一致。举个例子,我曾经参与过的爬虫工程,假设要爬取一个网页,我是根据分类来爬取的,因为各个分类下的页数是不一致的,如果将这些分类平均的分配给一定量的线程,就会使得有些线程很快就结束了,而原创 2016-10-06 10:22:31 · 1006 阅读 · 0 评论 -
多线程学习总结(五)——实现多线程的方法之CyclicBarrier
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 这里说的其实已经不是怎么实现多线程了,而是关于多线程的应用了;古时候,行军打仗,总喜欢分兵几路(可能是因为各个兵种行军速度不一样吧,(*^__^*) ),然后在某个指定地点会师,最好在一起的各路大军发起总攻。这里用多线程怎么实现呢,也许你会说,简单啊,分几路兵,就开几个线程原创 2016-10-05 17:08:35 · 457 阅读 · 0 评论 -
多线程学习总结(四)——实现多线程的方法之Callable和Futura
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 前面提到的实现Runnable接口和继承Thread类的方式都是没有返回值的,而这次要是的通过实现Callable接口的方式实现是能够有返回值的,集体的返回值类型可根据需要自己指定,这个返回值可以是一个对象,也可以是一个容器类(根据需求),既然有返回值,那就必须要获取到,而原创 2016-10-05 16:07:08 · 407 阅读 · 0 评论 -
多线程学习总结(三)——实现多线程的方法之线程池
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333前面已经提到了三种实现多线程的方式,这三种都是最基础的(或者说是两种),这里要提到的其他实现方式,其实也只是都这三种方式的包装,本质上还是原来的那些,只是包装成一个工具类让大家能够更方便的使用。这里我会把我知道的所有的方法给大家说下(如果有遗漏欢迎大家补充,有些本质一样的用法不一样的原创 2016-10-05 10:08:19 · 317 阅读 · 0 评论 -
多线程学习总结(二)——实现多线程的方法
说到实现多线程的方法,在JDK1.5之前的版本中总共有三种,分别是:1、继承Thread类;2、实现Runnable接口;3、继承TimerTask类。其中第三种的TimerTask类是一个抽象类,实现了Runnable接口,所以也可以看做是总共只有两种,而第三种主要是为了做定时任务而采用的。下面一个个看一下:第一种继承Thread类的情况,代码如下public class TestThread原创 2016-10-04 15:03:52 · 299 阅读 · 0 评论 -
多线程学习总结(十)——线程安全之线程间的通信深入
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 上一篇博客中说到了用wait(),notif()方法来达到线程间通信的目的,如果你对这两个方法的认知够深入,你会发现上一遍博客写的代码中有一个bug,在使用到了多个生产者和消费者时(上一篇没看过的,可以去看下),有可能出现。这个bug的解决办法也是有的,对代码的改动也不大,这里原创 2016-10-16 15:02:58 · 455 阅读 · 0 评论 -
多线程学习总结(九)——线程安全之线程间的通信
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 前面的博客说到了用加锁的方式来保证共享变量的安全,但这不是绝对的, 举一个简单点的生产者和消费者模型,面包师生产面包,放到盘子里(盘子容量有限,只能放一个),店家从盘子中拿到面包,然后卖掉;整个过程很简单,但是要保证盘子中最多只能有一个面包;如果用加锁的方式来写的话,代原创 2016-10-15 16:55:55 · 388 阅读 · 0 评论 -
多线程学习使用(二)——仿真之饭店服务系统
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 这个仿真系统相较于前一个会稍微麻烦一下(看个人理解),接下来看下代码:import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.concurrent.原创 2016-10-23 16:46:10 · 278 阅读 · 0 评论 -
多线程学习使用(一)——仿真之银行业务系统
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 接下来的三篇都是关于学习了多线程之后的应用,参考的都是《java编程思想》这本书里的关于多线程仿真篇的内容。只是自己理解了后,重新打了一遍,说真的,学习java光看是没什么用的,我一开始看书中的内容的时候,基本没看懂是什么意思,我跟着代码模仿着敲了一遍,在这过程中我也考虑了为啥原创 2016-10-23 15:09:00 · 1463 阅读 · 1 评论 -
多线程学习总结(十二)——构建简单的线程池
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 前面的关于线程安全的介绍,就暂时告一段落了,关于线程安全还有很多其他的要学习的地方,我水平有限,大家自己深入研究(学习永远要靠自己)。今天来说说怎么构建一个线程池,来实现像java中已经实现的线程池类似的功能,当然我们只是简单实现,java中已经实现的肯定逻辑更严谨。publ原创 2016-10-23 12:52:02 · 339 阅读 · 1 评论 -
多线程学习使用(三)——分发之汽车装配
声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333 这个系统是关于汽车装配过程中让一辆车从生成到完成装配,最后展示的整个过程。相较于前两个,这个系统用到的知识更广,是对所学相关多线程知识的练习。 代码示例如下:import java.util.HashSet;import java.util.Set;import原创 2016-10-30 17:59:30 · 349 阅读 · 0 评论