package com.qiku.day22; public class Demo01 { //1、编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数 // 第二个线程用来计算100000~200000之间的素数的个数,最后输出结果。 public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { int index = 0; @Override public void run() { for (int i = 2; i <=100000 ; i++) { boolean flag = true; for (int j = 2; j < i ; j++) { if (i%j==0){ flag = false; break; } } if (flag == true){ index++; } } System.out.println("2-100000的个数:"+index); } }); Thread t2 = new Thread(new Runnable() { int index = 0; @Override public void run() { for (int i = 100000; i <=200000 ; i++) { boolean flag = true; for (int j = 2; j < i ; j++) { if (i%j==0){ flag = false; break; } } if (flag == true){ index++; } } System.out.println("1000000-200000的个数:"+index); } }); t1.start(); t2.start(); } }
package com.qiku.day22; public class Table { private int beanNum; public Table(int beanNum) { this.beanNum = beanNum; } public synchronized void catchBean(){ if (beanNum == 0){ throw new RuntimeException("没豆子了"); } Thread.yield(); beanNum--; } public int getBeanNum() { return beanNum; } public void setBeanNum(int beanNum) { this.beanNum = beanNum; } public static void main(String[] args) { Table table = new Table(100); Thread t1 = new Thread(new Runnable() { @Override public void run() { while (true){ table.catchBean(); Thread.yield(); System.out.println( Thread.currentThread().getName()+"豆子的数量:"+ table.getBeanNum()); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { while (true){ table.catchBean(); Thread.yield(); System.out.println(Thread.currentThread().getName()+ "豆子的数量:"+ table.getBeanNum()); } } }); t1.start(); t2.start(); } }