首先了解线程的状态转换图:

在Java中一个类要当做线程来使用有两种方法:

1)继承Thread类,并重写run函数

2)实现Runnable接口,并重写run函数

Java是单继承的,但某些情况下一个类可能已经继承了某个父类,则不能再继承Thread类创建线程,只能用第二种。

下面是针对同一问题“编写一个程序,该程序每隔一秒自动输出Hello World,输出10次后自动退出”的两种不同方案。

方案一:

 public class Demo_1 {
public static void main(String[] args) {
Cat cat=new Cat(); //创建一个Cat对象
cat.start(); //启动线程,会导致run()函数的运行
}
} class Cat extends Thread{
int times=0;
//重写run()函数
public void run(){
while(true){
//休眠一秒,1000表示1000毫秒,sleep就会让该线程进入Blocked状态,并释放资源
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
times++;
System.out.println("Hello World"+ times); if(times==10){
break; //退出
}
}
}
}

方案二:

 public class Demo_2 {
public static void main(String[] args){
//注意启动
Dog dog=new Dog();
Thread t=new Thread(dog);
t.start();
}
} class Dog implements Runnable{
int times=0;
public void run(){
while(true){
//休眠一秒
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
times++;
System.out.println("Hello World"+times); if(times==10){
break;
}
}
}
}

最新文章

  1. [原] Intellij IDEA开发Android,祝还在使用eclipse的早日脱离苦海
  2. 面向对象原生js幻灯片代淡出效果
  3. Java面试葵花宝典
  4. javascript设计模式3
  5. 【技术贴】解决 myeclipse打不开报错an error has occurred, see .
  6. 学习之路十四:客户端调用WCF服务的几种方法小议
  7. Effective Go -> Interface
  8. SpringSecutiry权限管理手册
  9. ●BZOJ 2560 串珠子
  10. LeetCode 178. 分数排名
  11. Php7有哪些新特性:
  12. 机器人学 —— 机器人感知(Location)
  13. keras实现textcnn
  14. ZIP压缩输入/输出流
  15. matlabR2017安装
  16. 本地mysql快速迁移到服务器数据库中
  17. Python高阶函数(Map、Reduce、Filter)
  18. Linux如何用yum安装软件或服务
  19. asp.net Hessian 服务的注册
  20. Sequelize-nodejs-1-getting started

热门文章

  1. Spark编程模型几大要素
  2. python2 与 python3 语法区别--转
  3. 案例分析:大数据平台技术方案及案例(ppt)
  4. struts2学习之基础笔记1
  5. 使用JS&jQuery改善用户体验
  6. mysql+spring+mybatis实现数据库读写分离[代码配置] .
  7. JS面向对像编程四—— prototype 对象
  8. Unity 点击屏幕发射射线 代码
  9. ZBrush中如何使用套索工具绘制遮罩
  10. Java模拟数据量过大时批量处理数据的两种实现方法