随笔分类 -  多线程

摘要:问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入,bean对象的值为null。 原因分析 web容器在启动应用时,并没有提前将线程中的bean注入( 阅读全文
posted @ 2016-11-24 15:05 费曼带我飞 阅读(1350) 评论(0) 推荐(0)
摘要:在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果。 所以run的返回值是void类型。 如果是一个多线程协作程序,比如菲波拉切数列,1,1,2,3,5,8...使用多线程来计算。 但后者需要前者的结果,就需要用callable接口了。 callable用法和ru 阅读全文
posted @ 2016-11-17 17:48 费曼带我飞 阅读(311) 评论(0) 推荐(0)
摘要:一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。 取到锁后,他就开始执行同步代码(被synchroniz 阅读全文
posted @ 2016-11-03 17:55 费曼带我飞 阅读(408) 评论(0) 推荐(0)
摘要:这篇文章讲了 1.同步异步概念(消去很多疑惑),同步就是一件事一件事的做;sychronized就是保证线程一个一个的执行。 2.我们需要明白,锁机制有两个层面,一种是代码层次上的,如Java中的同步锁,典型的就是同步关键字synchronized ( 线 程级别的)。另一个就是数据库层次上的,比较 阅读全文
posted @ 2016-11-03 17:20 费曼带我飞 阅读(8131) 评论(1) 推荐(0)
摘要:悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op 阅读全文
posted @ 2016-11-03 16:55 费曼带我飞 阅读(219) 评论(0) 推荐(0)
摘要:1、首先建立一个任务Task类 2、建立一个继承Thread的工作线程类来实现任务Task,一个工作线程可以实现多个任务。 3、接下来就是最重要的任务分发管理类了。 4、接下来就是测试了,我们假定有8个任务,同时可以有5个工作线程工作,结果如下:线程 0 的任务数:2 任务ID区间[0,1]线程 1 阅读全文
posted @ 2016-11-01 09:20 费曼带我飞 阅读(1984) 评论(0) 推荐(0)
摘要:JDK5中的一个亮点就是将Doug Lea的并发库引入到Java标准库中。Doug Lea确实是一个牛人,能教书,能出书,能编码,不过这在国外还是比较普遍的,而国内的教授们就相差太远了。 一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的Tomca 阅读全文
posted @ 2016-10-28 17:18 费曼带我飞 阅读(1500) 评论(0) 推荐(0)