- 利用Thread实现,要求多线程求解某范围素数每个线程负责1000范围:线程1找1-1000;线程 2 找 1001-2000;线程 3 找2001-3000。编程程序将每个线程找到的素数及时打印。
class PrimeGenerator extends Thread{ private long beginNumber; private long endNumber; /** * 构造方法 * @param beginNumber * @param endNumber */ public PrimeGenerator(long beginNumber,long endNumber) { this.beginNumber = beginNumber; this.endNumber = endNumber; } /** * 重写父类方法 */ public void run() { // This bucle never ends... until is interrupted while (true) { //如果是素数则输出 if (isPrime(beginNumber)) { System.out.printf("Number %d is Prime\n",beginNumber); } // 如果线程中断,输出错误信息并结束 if (isInterrupted()) { System.out.printf("The Prime Generator has been Interrupted\n"); return; } //如果开始值大于结束值,结束 if (beginNumber>endNumber) { return; } //修改开始值 beginNumber++; } } /** * 判断一个数是否是素数,如果是则返回true,不是返回false * @param number * @return */ private boolean isPrime(long number) { //如果一个数小于等于2,则是素数 if (number <=2) { return true; } //如果一个数大于2,则判断该数是否能被2和number-1之间的数整除, //如果能整除就不是素数 for (long i=2; i<number; i++){ if ((number % i)==0) { return false; } } return true; } } public class PrimeTest { public static void main(String[] args) { //实例化3个线程,分别调用start方法来启动线程 PrimeGenerator t1=new PrimeGenerator(1,1000); t1.start(); PrimeGenerator t2=new PrimeGenerator(1001,2000); t2.start(); PrimeGenerator t3=new PrimeGenerator(2001,3000); t3.start(); } }
- 利用Runnable实现,要求多线程求解某范围素数每个线程负责1000范围:线程1找1-1000;线程 2 找 1001-2000;线程 3 找2001-3000。编程程序将每个线程找到的素数及时打印。
class PrimeGenerator implements Runnable{ private long beginNumber; private long endNumber; /** * 构造方法 * @param beginNumber * @param endNumber */ public PrimeGenerator(long beginNumber,long endNumber) { this.beginNumber = beginNumber; this.endNumber = endNumber; } /** * 实现接口的run方法 */ public void run() { // This bucle never ends... until is interrupted while (true) { //如果是素数则输出 if (isPrime(beginNumber)) { System.out.printf("Number %d is Prime\n",beginNumber); } //如果开始值大于结束值,结束 if (beginNumber>endNumber) { return; } //修改开始值 beginNumber++; } } /** * 判断一个数是否是素数,如果是则返回true,不是返回false * @param number * @return */ private boolean isPrime(long number) { //如果一个数小于等于2,则是素数 if (number <=2) { return true; } //如果一个数大于2,则判断该数是否能被2和number-1之间的数整除, //如果能整除就不是素数 for (long i=2; i<number; i++){ if ((number % i)==0) { return false; } } return true; } } public class PrimeTest { public static void main(String[] args) { //实例化3个线程,分别调用start方法来启动线程 PrimeGenerator t1=new PrimeGenerator(1,1000); new Thread(t1).start(); PrimeGenerator t2=new PrimeGenerator(1001,2000); new Thread(t2).start(); PrimeGenerator t3=new PrimeGenerator(2001,3000); new Thread(t3).start(); } }
- 编写一个Java程序(包括一个主程序类,一个线程类。在主程序类中创建2个线程,将其中一个线程的优先级设为10,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。
class PriortyThread extends Thread{ private String name; public PriortyThread(String name){ this.name = name; } /** * 重写父类的run方法,输出200个语句 */ public void run(){ for(int i=0;i<200;i++){ System.out.println("线程"+name+"正常运行"); } } }
- 编写一个计时器,每隔一秒钟,在控制台打印出最新时间。
public class Main { public static void main(String[] args) { while(true){ SimpleDateFormat sdf =new SimpleDateFormat("HH:mm:ss"); System.out.println(sdf.format(new Date())); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }