首页 / JAVA / Java 多线程练习
Java 多线程练习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 多线程练习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2943字,纯文字阅读大概需要5分钟。
内容图文
![Java 多线程练习](/upload/InfoBanner/zyjiaocheng/702/dc4951df4298421f9f6c6dba5b75a3eb.jpg)
class Paper implements Runnable { boolean bFlag = false; private int id; public void setId(int id) { this.id = id; } public int getId() { return this.id; } public String position; private List<String> listPosCount = new ArrayList<String>(); private HashMap<Integer, int[]> dic = new HashMap<Integer, int[]>(); private List<Integer> myList = new ArrayList<Integer>(); private int[] getNumbers(int size) { int numbers[] = new int[size]; for (int i = 0; i < size;) { boolean flag = false; numbers[i] = (int) (Math.random() * 100); for (int j = 0; j < i; j++) { if (numbers[j] == numbers[i]) { flag = true; break; } } if (flag == true) { continue; } i++; } return numbers; } @Override public void run() { synchronized (this) { while (myList.size() < 100) { while (!bFlag) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.bFlag = false; if (!myList.contains(id)) { myList.add(id); if (position == "qian门" || position == "后门") listPosCount.add(position); int nums[] = getNumbers(7); dic.put(id, nums); System.out .println("编号为: " + id + " 的员工 从" + position + " 入场! 拿到的双色球彩票号码是:" + Arrays.toString(nums)); } else { } this.notifyAll(); } int a = 0, b = 0; for (String str : listPosCount) { if (str == "后门") a++; if (str == "qian门") b++; } System.out.println("从后门入场的员工总共:" + a + " 位员工"); System.out.println("从后门入场的员工总共:" + b + " 位员工"); } } }//-------------------------------------------------------------------------------- //测试main函数
public class ThreadLearn2 { public static void main(String[] args) { Paper p = new Paper(); Thread th1 = new Thread(p); Thread th2 = new Thread(p); Runnable run1 = new Runnable() { @Override public void run() { synchronized (p) { List<Integer> list = new ArrayList<Integer>(); while (list.size() < 100) { int i = (int) (Math.random() * 100); if (list.indexOf(i) == -1) { p.setId(i); list.add(i); p.bFlag = true; int num = (int) (Math.random() * 100) % 2; if (num == 1) { p.position = "后门"; } else { p.position = "qian门"; } p.notifyAll(); while (p.bFlag) { try { p.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } }; Thread th3 = new Thread(run1); th1.start(); th2.start(); th3.start(); } }
![Java 多线程练习 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503083142492.jpg)
? ?
内容总结
以上是互联网集市为您收集整理的Java 多线程练习全部内容,希望文章能够帮你解决Java 多线程练习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。