当前位置: 首页 > wzjs >正文

郴州网站建设软件定制开发平台免费的网站平台有哪些

郴州网站建设软件定制开发平台,免费的网站平台有哪些,企业网站策划方案模板,手机网站建设价格表🔍 开发者资源导航 🔍🏷️ 博客主页: 个人主页📚 专栏订阅: JavaEE全栈专栏 Callable 我们知道在JAVA的线程中我们只能执行任务,而这个任务不能返回一个值,而Callable的出现就是为了…

在这里插入图片描述

🔍 开发者资源导航 🔍
🏷️ 博客主页: 个人主页
📚 专栏订阅: JavaEE全栈专栏

Callable

我们知道在JAVA的线程中我们只能执行任务,而这个任务不能返回一个值,而Callable的出现就是为了弥补这一缺陷。

Callable:定义一个带有返回值的任务, 并没有真的在执行,需要搭配Thread对象来使用。

Thread本身不提供获取结果的方法,需要凭FurureTask对象来得到结果,这么做是为了解耦合。

public static void main(String[] args) throws ExecutionException, InterruptedException {Callable<Integer> callable = new Callable<Integer>() {@Overridepublic Integer call() throws Exception {Integer res = 0;for (int i = 0; i < 10; i++) {res += i;}return res;}};FutureTask<Integer> futureTask = new FutureTask<>(callable);Thread thread = new Thread(futureTask);thread.start();System.out.println(futureTask.get());
}
//匿名写法
FutureTask<Integer> futureTask = new FutureTask<>(()->{Integer res = 0;for (int i = 0; i < 10; i++) {res += i;}return res;
});

get方法用于获取FutureTask的返回值,如果FutureTask没有运行完成get方法会产生阻塞,直到线程运行完毕,get拿到返回结果。

ReentrantLock (可重入锁)

通过lock()和unlock()方法加解锁,效率比synchronized低,远古时期用的较多。

如果要使用ReentrantLock进行加锁,可以通过此方式防止忘记解锁

locker.lock();
try {//代码逻辑
} finally {locker.unlock();
}

ReentrantLock和synchronized的区别:

  1. synchronized 是 关键字(内部实现是 JVM 内部通过 C++ 实现的),ReentrantLock 标准库的类(Java)。
  2. synchronized 通过代码块控制加锁解锁,ReentrantLock 需要 lock/unlock 方法,需要注意 unlock 不被调用的问题。
  3. ReentrantLock 除了提供 lock, unlock 之外,还提供了一个方法trylock(),这个方法不会产生阻塞,加锁成功返回true,失败返回false,可以由调用者决定接下来怎么做。
  4. ReentrantLock提供了公平锁的实现,默认是非公平,需要在创建的时候传入true。
  5. ReentrantLock搭配的等待通知机制是Condition类,相比于wait notify来说要更加强大灵活一些。

semaphore(信号量)

信号量表示的是“可用资源的个数”,申请一个资源,计数器就会+1,释放一个就会-1,如果为0,继续申请就会陷入阻塞等待。

//设置初始数量
Semaphore semaphore = new Semaphore(5);
//申请一个资源
semaphore.acquire();
//获取多少个资源可以申请
System.out.println(semaphore.availablePermits());
//释放一个资源
semaphore.release();
System.out.println(semaphore.availablePermits());

作用:

  1. 限制同时访问某资源的线程数(如接口限流、数据库连接池)。
  2. 管理有限的资源(如线程池、数据库连接池)。

特殊场景:
当初始值为1时,等价于“锁”。

Semaphore mutex = new Semaphore(1);  // 二进制信号量void criticalSection() throws InterruptedException {mutex.acquire();try {// 临界区代码(同一时间仅一个线程可进入)} finally {mutex.release();}
}

CountDownLatch

在使用多线程,经常把一个大任务拆分成多个子任务,可以提高程序的效率。

那么我们如何判定这个大任务已经完成了呢?Java引入了CountDownLatch类帮助我们判定。

  1. 在构造时传入参数,表示有多少个任务。
  2. 在每个任务完成时,调用一次countDown方法,当次数足够时,说明任务已经全部完成。
  3. 在主线程中调用await方法会等待任务全部完成。
public static void main(String[] args) throws InterruptedException {CountDownLatch countDownLatch = new CountDownLatch(10);//重写工厂类方法ThreadFactory threadFactory = new ThreadFactory() {private int cnt = 0;@Overridepublic Thread newThread(Runnable r) {Thread thread = new Thread(r, "Thread" + cnt);thread.setDaemon(true);return thread;}};//使用工厂类创建线程池ExecutorService executorService = Executors.newFixedThreadPool(1, threadFactory);//提交任务for (int i = 0; i < 10; i++) {int id = i;executorService.submit(()->{System.out.println("开始" + Thread.currentThread().getName() + id);try {Thread.sleep(100);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("结束" + Thread.currentThread().getName() + id);countDownLatch.countDown();});}//等待全部完成countDownLatch.await();System.out.println("全部结束了");
}

感谢各位的观看Thanks♪(・ω・)ノ,如果觉得满意的话留个关注再走吧。


文章转载自:

http://4u3vXlwO.Lbcbq.cn
http://x2NEqHGC.Lbcbq.cn
http://GYVOY182.Lbcbq.cn
http://OhobcdFw.Lbcbq.cn
http://F5caHeD6.Lbcbq.cn
http://bdFM0zZn.Lbcbq.cn
http://Sbv9TdMt.Lbcbq.cn
http://uCjUXSwQ.Lbcbq.cn
http://ROkmeIo8.Lbcbq.cn
http://0LwyXtx9.Lbcbq.cn
http://mmzxlF4m.Lbcbq.cn
http://OBssuRhi.Lbcbq.cn
http://fufndweu.Lbcbq.cn
http://eOQU4HMU.Lbcbq.cn
http://9Zg0IWvb.Lbcbq.cn
http://M6eb3RsY.Lbcbq.cn
http://NNwQOi2I.Lbcbq.cn
http://YqyLafTs.Lbcbq.cn
http://WDXn8lan.Lbcbq.cn
http://rPxtoa6r.Lbcbq.cn
http://ytknO0Uw.Lbcbq.cn
http://bWPiwRZ5.Lbcbq.cn
http://BEQuLDr0.Lbcbq.cn
http://zpo2qwHg.Lbcbq.cn
http://x9Cd8esY.Lbcbq.cn
http://gDFWpebP.Lbcbq.cn
http://PhpT1pqV.Lbcbq.cn
http://DUBEVYPT.Lbcbq.cn
http://qJgQQSW0.Lbcbq.cn
http://BBdMHoJ0.Lbcbq.cn
http://www.dtcms.com/wzjs/622514.html

相关文章:

  • 重庆光龙网站建设做网站是什么会计科目
  • 媒体网站的销售怎么做模块化wordpress企业主题
  • 网站首页模板设计图企业网站建设兴田德润地址
  • 防城港建设局网站如何使用网站模板建设网站
  • 网站顶部动画代码ppt设计大赛
  • 如何查询网站开发语言wordpress子页面不显示
  • 建网站的软件有哪些长沙网站关键词优化
  • 排名轻松seo 网站网站建设那里
  • 做网站都能赚钱吗泽库县wap网站建设公司
  • 澄迈网站建设wordpress 3.6.2
  • 手机网站设计规范wordpress 多媒体分类
  • 全站flash网站南昌seo站外优化
  • 漳州网站建设哪家好网站地图的使用
  • 做暧免费观看网站网站开发商怎么关闭图片显示
  • 分析网站的网站WordPress轻论坛模板
  • e时代网站制作国际网站 建设
  • 微享网络网站建设专有网络WordPress
  • 网站如何制作多少钱宁波网站开发公司电话
  • 四川中天建设有限公司网站ps模板素材网站
  • 建一个电商网站要多少钱网站建设商家公司
  • 2017网站建设费用一个服务器怎么做两个网站
  • 内蒙能源建设集团网站农业企业网站建设流程
  • 中国建设银行舟山分行网站百度开户渠道商哪里找
  • 网站开发三层旅游电子商务网站建设规划
  • 网站服务类型是什么意思往网站添加图片吗
  • 黄岩区信誉好高端网站设计营业执照官网申请入口
  • 网站建设人员配备提供网站建设商家
  • 江苏网站建设教程怎么删除wordpress主题
  • 公司网站设计与制网站开发小图标怎么设置
  • 快速做网站公司哪家好单位网站的建设