首页 > 编程语言 > 详细

Java.Util.Concurrent包中的一些东东

时间:2019-06-04 19:02:02      阅读:88      评论:0      收藏:0      [点我收藏+]

1.Callable<V> :接口,多线程的一种实现方式,重写的call()方法有返回值,需要配合着FutureTask类(实现了Runnable接口)使用:

 1 public class CallableTest {
 2     public static void main(String[] args) {
 3         Test t=new Test();
 4         FutureTask<Integer> f=new FutureTask<>(t);  //获取结果,与callable配合着使用
 5         new Thread(f).start();   //FutureTask也实现了Runnable接口
 6         Integer i= null;
 7         try {
 8             i = f.get();  //FutureTask的方法,获得个、返回的结果
 9         } catch (InterruptedException e) {
10             e.printStackTrace();
11         } catch (ExecutionException e) {
12             e.printStackTrace();
13         }
14         System.out.println(i);
15 
16     }
17 }
18 class Test implements Callable<Integer>{  //实现Runnable接口,重写call()方法,有返回值
19     int sum=0;
20     @Override
21     public Integer call() throws Exception {
22         for (int i = 0; i <=100; i++) {
23             sum=sum+i;
24         }
25         return sum;
26     }
27 }

2.Semaphore类:信号量

 

 Semaphore s2=new Semaphore(5,true);
 Semaphore s1=new Semaphore(5);  
//两种构造方法,(int,boolean) int:资源的访问量 boolean:是否是公平竞争 //公平竞争:等的越久越先执行
try {
s1.acquire();//请求资源,如果资源不可用该线程阻塞,直到有可用资源为止;
} catch (InterruptedException e) {
e.printStackTrace();
}
s1.release();//释放资源
 

 

Java.Util.Concurrent包中的一些东东

原文:https://www.cnblogs.com/xbfchder/p/10975146.html

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