多线程在java编程领域就是一个比较难也是相对赚钱的本事,最近接手了一个新项目, 是一个处理订单的系统,异步处理订单,定时任务来定时扫描配置表, 用到了很多的多线程编程,而且其中的设计模式也用到了许多,不过是个挺老的系统,与剖析tomcat一样,我会详细去理解这个系统,并争取写出文章来,(ps:之前的tomcat没有完结,打算这礼拜或者这个过年补上)单论多线程编程的好处就是充分利用多核处理器,异步操作数据,不必阻塞所有线程,我们现在就开始从项目中学习多线程编程,当然欢迎指点我会改正我认识的不够的地方,争取完成这一套关于多线程的博文。
1.线程与进程
线程的理解就是处理器的一次请求,比如单单一个http请求就是一个线程去操作的,用户点击鼠标确定之后,之后的操作直到http请求发出之前,都是一个线程完成的。
进程的理解:曾看到许多线程就成为了一个进程,当你打开安卓手机后台,查看后台应用程序,那些就是进程,一个应用可能会有好几个进程。
一个应用至少一个进程,一个进程至少有一个线程。
2.线程的状态
new 状态,新建线程,第一种方法extends Thread 并override run方法,第二种方法实现Runnable接口。当然还是偏向后者。
Runnable状态,调start方法,启动线程。
blocking阻塞状态,线程请求的资源被其他线程占用,等待其他线程离开以后再获取同步的监视器锁,这就是阻塞状态。
waiting状态,超时等待,
终止状态,determined.
3.并发模型
java中使用的并发模型是共享内存并发模型,线程之间的通信是隐式的,线程之间的同步是显式的。了解java并发对你学习多线程是有利无害的,如果想要更加深入的学习推荐一本《java多线程编程核心技术-高洪岩》或者去infoq官网搜java内存模型。
知道了以上的前提之后,学习java多线程编程就会有一定基础。现在进一步熟悉多线程,提出一个场景,当A、B两个人约定了一个去A处的咖啡厅见面要交换书籍,两人20分钟内见面,可是A 10分钟就到了,把书放在桌子上,B没有和A见面,只是看到了A的本子。如果A在到了地点以后,等待,知道B到了才一起将书本互换,请理解这里面的线程并发模型。并结合线程状态,理解第一种情况和第二种情况A、B线程分别为什么状态,是否有同步?
线程基础
最新推荐文章于 2020-08-31 18:01:47 发布