java多线程交替打印,两个线程轮流打印

  java多线程交替打印,两个线程轮流打印

  使用重入锁实现两个线程交替打印

  实现字母在前数字在后

  包com。学习。图案;

  导入Java。util。并发。countdownlatch

  导入Java。util。并发。锁。条件;

  导入Java。util。并发。锁。锁;

  导入Java。util。并发。锁。重入锁;

  公共类演示2 {

  私有静态锁Lock=new reentrant Lock();

  私有静态条件C1=锁定。新条件();

  私有静态条件C2=锁定。新条件();

  private static CountDownLatch count=new CountDownLatch(1);

  公共静态void main(String[] args) {

  字符串c= ABCDEFGHI

  char[]ca=c . tochararray();

  字符串n= 123456789

  char[]na=n . tochararray();

  线程t1=新线程(()- {

  尝试{

  锁定。lock();

  数数。倒计时();

  for(char caa : ca) {

  C1。signal();

  系统。出去。打印(CAA);

  C2。await();

  }

  C1。signal();

  } catch (InterruptedException e) {

  e。printstacktrace();

  }最后{

  锁定。unlock();

  }

  });

  线程t2=新线程(()- {

  尝试{

  数数。await();

  锁定。lock();

  for(char naa : na) {

  C2。signal();

  系统。出去。印刷品(NAA);

  C1。await();

  }

  C2。signal();

  } catch (InterruptedException e) {

  e。printstacktrace();

  }最后{

  锁定。unlock();

  }

  });

  t1。start();

  T2。start();

  }

  }最后输出结果:

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  免费学习视频教程推荐:java教学视频

  使用LinkedTransferQueue实现两个线程交替打印

  实现字母在前数字在后

  包com。学习。图案;

  导入Java。util。并发。linkedtransferqueue

  公共类演示3 {

  private static LinkedTransferQueueCharacter linkedC=new LinkedTransferQueueCharacter();

  private static LinkedTransferQueueCharacter linkedN=new LinkedTransferQueueCharacter();

  公共静态void main(String[] args) {

  字符串c= ABCDEFGHI

  char[]ca=c . tochararray();

  字符串n= 123456789

  char[]na=n . tochararray();

  线程t1=新线程(()- {

  for(char caa : ca) {

  尝试{

  联动c . put(CAA);

  char a=linkedn。take();

  系统输出打印(一);

  } catch (InterruptedException e) {

  e。printstacktrace();

  }

  }

  });

  线程t2=新线程(()- {

  for(char naa : na) {

  尝试{

  char b=链接的c . take();

  系统。出去。打印(b);

  链接的n . put(NAA);

  } catch (InterruptedException e) {

  e。printstacktrace();

  }

  }

  });

  t1。start();

  T2。start();

  }

  }输出结果:

  使用同步的实现两个线程交替打印

  实现字母在前数字在后

  包com。学习。图案;

  导入Java。util。并发。countdownlatch

  公共类演示4 {

  private static CountDownLatch count=new CountDownLatch(1);

  公共静态void main(String[] args) {

  字符串c= ABCDEFGHI

  char[]ca=c . tochararray();

  字符串n= 123456789

  char[]na=n . tochararray();

  对象锁=新对象();

  线程t1=新线程(()- {

  同步(锁定){

  数数。倒计时();

  for(char caa : ca) {

  系统。出去。打印(CAA);

  锁定。notify();

  尝试{

  锁定。wait();

  } catch (InterruptedException e) {

  e。printstacktrace();

  }

  }

  锁定。notify();

  }

  });

  线程t2=新线程(()- {

  尝试{

  数数。await();

  } catch (InterruptedException e) {

  e。printstacktrace();

  }

  同步(锁定){

  for(char naa : na) {

  系统。出去。印刷品(NAA);

  锁定。notify();

  尝试{

  锁定。wait();

  } catch (InterruptedException e) {

  e。printstacktrace();

  }

  }

  锁定。notify();

  }

  });

  t1。start();

  T2。start();

  }

  }输出结果:

  使用锁定支持实现两个线程交替打印

  实现字母在前数字在后

  包com。学习。图案;

  导入Java。util。并发。锁。锁支持;

  公共类演示5 {

  私有静态线程t1;

  私有静态线程T2;

  公共静态void main(String[] args) {

  字符串c= ABCDEFGHI

  char[]ca=c . tochararray();

  字符串n= 123456789

  char[]na=n . tochararray();

  t1=新线程(()- {

  for(char caa : ca) {

  系统。出去。打印(CAA);

  锁定支架。联合国公园(T2);

  锁定支架。park();

  }

  });

  t2=新线程(()- {

  for(char naa : na) {

  锁定支架。park();

  系统。出去。印刷品(NAA);

  锁定支架。联合国公园(t1);

  }

  });

  t1。start();

  T2。start();

  }

  }输出结果:

  相关文章教程推荐:java零基础入门以上就是爪哇岛实现两个线程交替打印的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: