java线程池同步_java线程池的使用&&使用线程池完成同步

使用Executors来创建线程池:

第一种:正常使用的线程池

public class ExecutorsTest implements Runnable{

private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

@Override

public void run() {

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+ ":" + format.format(new Date()) + "执行");

}

public static void main(String[] args) {

ExecutorService pool = Executors.newFixedThreadPool(2);//创建一个可重用的,具有2个线程数的线程池

pool.submit(new ExecutorsTest());//提交Runnabled实例

pool.submit(new ExecutorsTest());//提交Runnabled实例

}

}

本次运行的结果为:

pool-1-thread-2:14:07:00执行

pool-1-thread-1:14:07:00执行

从结果上可以看出两个线程运行的时间没有间隔。

第二种:使用线程池实现同步(创建线程池里只有一个线程数)

public class ExecutorsTest implements Runnable{

private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

@Override

public void run() {

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+":" + format.format(new Date()) + "执行");

}

public static void main(String[] args) {

ExecutorService pool = Executors.newFixedThreadPool(1);//创建一个可重用的,具有2个线程数的线程池

pool.submit(new ExecutorsTest());//提交Runnabled实例

pool.submit(new ExecutorsTest());//提交Runnabled实例

}

}

运行结果为:

pool-1-thread-1:14:10:20执行

pool-1-thread-1:14:10:23执行

从结果可以看出,两个结果运行时间相差了三秒,Thread.sleep(3000);就是这儿运行的费时时间。

看来线程池中只有一个线程数的时候,是可以实现同步效果的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值