![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发
文章平均质量分 64
中华雪碧
这个作者很懒,什么都没留下…
展开
-
java多线程(8):Callable、FutureTask的应用
简介CallableCallable是类似Runnable的类,主要区别在于Callable是可以返回结果,而Runnable不会。FutureTask简单说FutureTask的作用是可以启用、取消、并且判断线程是否完成,可以搭配Callable和Runnable使用。和Callable一起使用时,可以实现在线程完成任务后获取返回结果。应用众所周知,为什么要使用多线程,无非是为了...原创 2019-10-11 21:38:38 · 257 阅读 · 1 评论 -
java多线程(1)Thread和Runnable
在java开发中不可避免用到多线程情况,比如web中常见的Servlet、Struts2都是运用到多线程,多线程的根本目的是为了更快的执行。其他常用到的多线程比如设计到大量I/O操作,用多线程可明显提升效率。java中最基础的并发类就是Runnable.class,Runnable是一个接口,只要实现实现Runnables,重写方法run() 就可以实现多线程操作。举个实现Runnable的例子原创 2017-04-17 22:38:23 · 519 阅读 · 0 评论 -
java多线程(2)Thread的实例方法
之前有简单介绍过java多线程的使用,已经Thread类和Runnable类,为了更好地理解多线程,本文就Thread进行详细的分析。startstart方法是开启线程的方法,使用后java会创建一个新的线程执行run里的方法。这是一个小demo: for(int i=0;i3;i++){ Thread t= new Thread(new Ru原创 2017-11-19 20:31:49 · 442 阅读 · 0 评论 -
java多线程(3)Thread的静态方法
上文介绍了Tread的实例方法,本文再介绍下 的静态方法。currentThread()currentThread方法返回当前线程的Objectpublic class Thread1 extends Thread{ static{ System.out.println(Thread.currentThread().getName()+" --> static")原创 2017-11-19 21:34:00 · 464 阅读 · 0 评论 -
java多线程(7)wait()、notify()和notityALL()
waitwait方法是Object中的方法,这个方法的功能特性: 1).执行wait方法的前提是当前线程已经获取到对象的锁,也就是wait方法必须在synchronized修饰的代码块或者方法中使用。 2).执行wait之后,会失去锁的所有权 3).wait方法执行后会一直等待,直到被调用notify()、notifyAll()或者所在线程被中断。 4).被调用notify()或者no...原创 2017-11-30 23:11:12 · 441 阅读 · 0 评论 -
java多线程(6)线程池
池的概念在java中也是常见,还有连接池、常量池等,池的作用也是类似的,对于对象、资源的重复利用,减小系统开销,提升运行效率。线程池的主要功能: 1.减少创建和销毁线程的次数,提升运行性能,尤其是在大量异步任务时 2.可以更合理地管理线程,如:线程的运行数量,防止同一时间大量任务运行,导致系统崩溃demo先举个demo,看看使用线程池的区别,线程池:AtomicLong al原创 2017-12-03 22:25:58 · 243 阅读 · 0 评论 -
java多线程(4)synchronized的作用
在多线程并发的情况下,有时就涉及到对于同一资源的读写,如果不进行一些处理,容易出现数据混乱,结果和实际不一致等问题。而在java里一个方法就是使用synchronized关键字对资源锁定。synchronized的用法synchronized有2种用法: 1.修饰代码块,以某个对象为锁,锁的范围是指定的代码块。 2.修饰方法,其实也可以等价于修饰代码块,比如修饰普通方法:synchronized原创 2017-11-23 22:35:39 · 321 阅读 · 0 评论 -
java多线程(5)死锁
上文讲到synchronized关键字在多线程中的使用,既然用到了锁,就会有出现死锁的情况。一个线程获得锁,如果其他线程也想获得同样的锁就会阻塞住,等待锁的释放。如果线程A已经获得锁1,还要获得锁2,同时线程B已经获得锁2,还要获得锁1,那么线程A和B就会一直阻塞住。例子依照惯例先举个例子:public class Test { public static void main(String[原创 2017-11-26 22:47:51 · 624 阅读 · 0 评论