`
3213213333332132
  • 浏览: 78611 次
社区版块
存档分类
最新评论

java线程的无限循环和退出

    博客分类:
  • java
阅读更多
最近想写一个游戏,然后碰到有关线程的问题,网上查了好多资料都没满足。
突然想起了前段时间看的有关线程的视频,于是信手拈来写了一个线程的代码片段。
希望帮助刚学java线程的童鞋
package thread;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;

/**
 * 线程没完没了的循环
 *
 * @author FuJianyong
 * 2015-6-16下午09:22:11
 */
public class EndlessLoop {

	//是否结束线程的旗标
	volatile boolean flag = true;
	//控制是否输出数字
	volatile boolean numIncrement = false;
	
	class Endless extends Thread{
	    public void run(){
	      long startTime = System.currentTimeMillis();	
	      System.out.println("线程开始正在生成随机数...");
	      while(flag){
	    	  Random random = new Random();
	    	  //随机数开关
	    	  int power = 0;
	    	  power = random.nextInt(50);
	    	  System.out.println("while循环产生的随机数:\t" + power);
	    	  if(power == 19){
	    		  //结束线程
	    		  flag = false;
	    		  break;
	    	  }
	    	  //计数
	    	  int i = 0;
	    	  for(;;){
	    		  power = random.nextInt(888);
	    		  if(power % 2 == 0 || power > 200){
		    		  //偶数则计数器增加
		    		  numIncrement = true;
		    	  }else{
		    		  //奇数则计数器停止增加
		    		  numIncrement = false;
		    	  }
	    		  if(numIncrement){
		    		  System.out.println("for循环产生的随机数是:\t" + power + "\t计数器增加:\t" + ++i + "\t" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
		    		  try {
						Thread.sleep(power * 2);
					  } catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					  }
	    		  }else{
	    			  System.out.println("for循环产生的随机数是:\t" + power + "\t计数器停止...");
	    			  break;
	    		  }
	    	  }
	      }
	      long endTime = System.currentTimeMillis();
	      System.out.println("线程结束等待垃圾回收...");
	      System.out.println("=====线程执行开始时间为:\t" + new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒").format(startTime));
              System.out.println("=====线程执行结束时间为:\t" + new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒").format(endTime));
	   }
	}
	public void start(){
	   	new Endless().start();
	}
	
	public static void main(String[] args) {
		new EndlessLoop().start();
	}
	
}

  • 大小: 37 KB
2
0
分享到:
评论

相关推荐

    Java开发技术大全(500个源代码).

    GcdAndGcm.java 求最大公约数和最小公倍数 errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 ...

    JAVA 范例大全 光盘 资源

    实例131 查看JVM中所有的线程和线程组 376 实例132 执行任务(线程池) 378 实例133 碰撞的球(多线程) 382 实例134 钟表(多线程) 387 实例135 模拟生产者与消费者 392 实例136 仿迅雷下载文件 396 第15章 ...

    Windows下设置守护进程JAR包挂掉自动重启,bat文件(已完美测试)

    它通过一个循环监控Java程序进程,如果检测到程序异常退出,会自动重启程序。同时具有可配置的重启次数和重启间隔时间。 这个小巧但实用的bat脚本实现了一个功能强大的守护进程机制,其可以广泛应用于各种Java程序的高...

    java 面试题 总结

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...

    Java swing基于JMF的音乐播放器(毕设项目,界面优美,支持多线程下载音乐,分为客户端、服务器及管理后台)

     音乐播放方式选择(单曲、随机、列表循环等) 3) 音乐列表  默认列表(用于音乐播放试听)  网络列表(同步网络歌单)  本地音乐(导入本地音乐) 4) 播放控制  自定义播放进度条  可点击或拖动快进 ...

    jav程序监控并记录jvm运行时内存、线程、垃圾收集和堆空间

    1. jav程序监控并记录jvm运行时内存、线程、垃圾收集和堆空间 2. 定时记录到本地文件中; 3. 可以设置记录的时间间隔和循环记录次数; 4. 在监控不完善的情况下,可以记录java进程异常退出之前的jvm状态信息; 5. ...

    面试官:如何终止线程?有几种方式?

    在 Java 中有以下 3 种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程终止; 使用 stop() 方法强行终止线程,但是不推荐使用这个方法,因为使用此方法不安全,目前该...

    java范例开发大全源代码

     实例23 利用for循环输出几何图形 36  实例24 杨辉三角 38  3.3 while语句 39  实例25 求1到100之间的和 39  实例26 存上100元需要多少天 40  实例27 输出100之间的所有偶数 41  实例28 如何判断...

    java范例开发大全

    实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229 变形...

    Java范例开发大全 (源程序)

     实例23 利用for循环输出几何图形 36  实例24 杨辉三角 38  3.3 while语句 39  实例25 求1到100之间的和 39  实例26 存上100元需要多少天 40  实例27 输出100之间的所有偶数 41  实例28 如何判断回文...

    超爽的自学课件(java)

    用break和continue以及Java的标签式break和contiune(它们被认为是Java中“不见的gogo”)退出循环;以及用switch实现另一种形式的选择。尽管这些与C和C++中见到的有一定的共通性,但多少存在一些区别。除此以外,...

    Java范例开发大全(全书源程序)

    实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229...

    超级有影响力霸气的Java面试题大全文档

     JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...

    java范例开发大全(pdf&源码)

    实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229 变形...

    Java开发技术大全 电子版

    8.3.3使用isAlive()和join()等待子线程结束273 8.3.4设置线程优先级275 8.4线程的通信与协调277 8.4.1线程的互斥277 8.4.2线程的同步279 8.4.3暂停、恢复和停止线程282 8.4.4生产者-消费者问题实例284 8.5本...

    达内 coreJava 习题答案

    System.out.println("年份有误,程序退出!"); System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not ...

    基于javatcpsocket通信的拆包和装包源码-java:Java

    创建和退出不是状态 阻塞是等待cpu以外的资源,就绪是等待cpu资源 Window内存管理方式:段存储,页存储,段页存储 空闲内存管理:使用位图的存储管理,使用链表的存储管理 空闲内存的四种分配算法:首次适应法,下次...

    简单JAVA线程池应用---服务器端

    此文档是: 基于简单线程池概念的JAVA服务器端应用 附有连接ORACLE数据库等简单操作. 操作描述:  服务器启动后,会启动10个子线程运行.(配合客户端10个请求进行模拟,控制台输出模拟过程) 服务器主程序进入一个有...

    阿里巴巴,天猫,支付宝面试题

    1. junit用法,before,beforeClass,after, afterClass的执行顺序 2. 分布式锁 3. nginx的请求转发算法,如何配置根据权重转发 4. 用hashmap实现redis有什么问题(死锁,死循环,可用...23. 线程如何退出结束

Global site tag (gtag.js) - Google Analytics