最近想写一个游戏,然后碰到有关线程的问题,网上查了好多资料都没满足。
突然想起了前段时间看的有关线程的视频,于是信手拈来写了一个线程的代码片段。
希望帮助刚学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
分享到:
相关推荐
在编写多线程程序时,应当避免不必要的死循环,或者在循环中加入适当的退出条件,确保程序的合理性和资源的有效利用。同时,正确地使用同步机制可以有效地控制线程间的交互,避免出现不必要的阻塞和资源浪费。
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,线程是通过类`Thread`或实现`Runnable`接口来创建和管理的。Java线程模型是基于操作系统的原生...
Java线程有10个优先级,从`MIN_PRIORITY`(1)到`MAX_PRIORITY`(10),默认是`NORM_PRIORITY`(5)。优先级高的线程更可能被调度执行,但不保证。 4. **线程同步** 当多个线程访问共享资源时,可能会出现竞态条件,...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本教程《Java多线程编程核心技术》将...
Java的线程提供了中断机制,通过`Thread.interrupt()`和`Thread.isInterrupted()`方法来控制和检查线程中断状态。在长时间运行的任务中,应定期检查中断标志,一旦检测到中断,及时清理资源并退出。 ```java ...
4. **停止线程**:`public void stop()`方法中,将`flag`设置回`false`,从而使得`while`循环退出,线程停止运行。 ### 最佳实践与注意事项 虽然使用标志变量是一种优雅的线程停止策略,但在实际应用中还需注意...
然后,在 while 循环中,我们输出当前线程的名称和状态。 第二个例子:前台线程和后台线程 在 Java 中,有两种类型的线程:前台线程(用户线程)和后台线程(守护线程)。前台线程是用户创建的线程,而后台线程是 ...
若想实现类似暂停和恢复的功能,可以采用类似停止线程的方法,使用标志变量配合循环检查。 4. **中断机制** Java提供了一个更安全的中断线程的机制,即`Thread.interrupt()`。当调用`interrupt()`时,目标线程的...
Java线程是多任务编程的重要组成部分,特别是在Java这种支持并发执行的语言中,理解和掌握线程的概念及使用至关重要。本文将基于提供的"Java线程入门"资料,深入探讨Java线程编程的基本概念、创建方法以及常见操作,...
在Java编程领域,多线程是一项至关重要...这些面试题和答案覆盖了Java多线程的核心知识点,有助于深入理解和掌握Java并发编程。在实际项目中,理解并熟练运用这些概念能够帮助开发者构建出更加高效、健壮的多线程应用。
Java线程有五种状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和终止(Terminated)。了解这些状态有助于调试和优化多线程程序。 7. 死锁问题: 当两个或更多线程相互等待对方释放资源...
Java线程是并发编程的核心部分,它允许程序同时执行多个任务,从而提高系统效率和响应速度。在Java中,线程有两种主要的创建方式:通过继承`Thread`类和实现`Runnable`接口。本资源“java线程例子大全”包含了十八个...
- **避免无限循环:** 无限循环会导致线程无法正常退出,应使用条件退出循环。 - **使用并发集合:** `java.util.concurrent`包提供了专门用于多线程环境的集合类。 #### 七、总结 通过本教程的学习,你已经掌握了...
Java线程基础是Java编程中的重要组成部分,尤其在多核处理器和并发编程需求日益增长的今天,理解并掌握线程的使用至关重要。IBM提供了一系列的Java线程教程,旨在帮助开发者深入理解Java线程的基本概念、创建与管理...
"Java线程案例"这个主题深入探讨了如何在Java中创建、管理和同步线程,这对于理解和掌握多线程编程至关重要。 线程的创建在Java中有多种方式: 1. 继承`Thread`类:创建一个新的类,继承自`Thread`类,重写`run()`...
Java线程是多任务编程的重要组成部分,它允许程序同时执行多个独立的代码片段,从而提高程序的效率和响应性。本文将深入探讨Java线程的概念、原理以及如何在实际编程中进行有效管理。 首先,我们要了解操作系统中的...
除了锁,Java还提供了其他并发工具,如`Semaphore`(信号量)用于限制同时访问特定资源的线程数量,`CyclicBarrier`(循环栅栏)让一组线程等待所有线程到达某个点后继续执行,`CountDownLatch`(计数器门锁)则允许...
Java线程有10个优先级,`Thread.MIN_PRIORITY` (1)到`Thread.MAX_PRIORITY` (10),默认优先级是`Thread.NORM_PRIORITY` (5)。不过,线程优先级对实际调度的影响并不大,因为大多数操作系统不支持优先级调度。 6. *...
【Java线程学习和总结】 Java线程是并发编程的核心,它使得程序能够同时执行多个任务,提高了系统资源的利用率和程序的响应速度。在Java中,线程有两种创建方式:通过实现Runnable接口或者继承Thread类。理解线程的...
Java线程具有优先级,`Thread.NORM_PRIORITY`是默认优先级,可以通过`setPriority()`设置优先级。但优先级并不保证线程的执行顺序,因为线程调度取决于JVM和操作系统。 6. **线程池** Java的`ExecutorService`和`...