首页 > 其他 > 详细

020_JUC

时间:2019-12-17 23:17:51      阅读:144      评论:0      收藏:0      [点我收藏+]

JUC  Java.util.Concurrent  并发包

池的顶级接口 Executor

子接口 ExecutorService

工具类 Executors(Collections、Arrays ...都是工具类)

①newFixedThreadPool(规定数量);固定

②newCashedThreadPool;动态增加

③newSingleThreadPool;只有一个

 

线程池中的线程是提前那创建好了,节省创建时间。

线程池中的线程是可重复利用。

线程和任务解耦了。

线程每做完一次任务,回到池中,等待线程池给他分配任务。

 

创建线程的方式:

方式一:继承 Thread

方式二:实现Runnable接口

方式三:实现Callable接口

 

对比Runnable与Callable的区别

Runnable Callable 
抽象方法是run  抽象方法是call 
run方法没有返回值 call方法有返回值(可以指定)
run方法没有声明异常     call方法声明了异常

Callable对象是在线程池对象的submit时执行

具体使用Callable时,接收返回值是future对象

获取返回值时,是Future对象的get()方法获取

并行 并发

多个线程同一时刻

同时进行

多个线程同一间隔

"同时进行"

 

Lock
    ReentrantLock    (实现类,这是可重入锁);
创建可重入锁:
Lock lock = new ReentrantLock();
// 在需要加锁的地方
lock.lock();
// 解锁
try{}
finally{
   lock.unlock();     
}

--------------------华丽丽的线--------------------------
synchronized(锁) 通信 锁.wait() 进入等待队列 ? 锁.notifyAll() 通知
相对应的

******************* lock         *            * 通信 await()   *            * ? signal()    *
// 这个是错误的吧!  *

 

创建线程的方式:

方式一:
extends Thread{
    重写run(){....}
}
// Thread.currentThread().getname() 获取姓名
启动:
    直接在main中new然后 .start();
匿名内部类
new Thread("线程二"){
    run(){...}
}.start();

--------------------华丽丽的线--------------------------

方式二:

implements Runnable{
重写run(){...}
}
new 然后new Thread(new名字)
t.start()
匿名内部类
new Thread(new Runnable{// 这没有  ")"
run(){...}
}).start();// 在这呢")"

 

--------------------华丽丽的线--------------------------


方式三:

实现Callable接口
implements Callable<>{
重写call(){}
public Object call(){... return null}

}
启动:
ExecutorService pool= Executors.newFixedThreadPool(3);//固定的线程数
new 上边对象;
// 通过线程池对象,提交任务分配给线程对象执行
pool.submit(new 对象);
// 匿名内部类
pool.submit(new Callable(){
重写call(){}
public Object call(){... return null}
});

--------------------华丽丽的线--------------------------

方式四:

// JDK8之后 lambda 表达式 创建多线程
// 针对接口只有一个 抽象方法 才可用
new Thread(()->{
直接写代码块
}).start();
// 拷贝 小括号() 写死 右箭头-> 落地 大括号{}

020_JUC

原文:https://www.cnblogs.com/a276665092/p/12056892.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!