(线程)——实现Runnable接口创建子线程

java.lang.Thread线程类和接口java.lang.Runnable,实现Runnable接口时线程执行类,需要实现run方法。

实现Runnable接口

实现Runnable接口是线程执行类,需要实现run方法,子线程处理代码放到run方法中,run方法称为线程体。

Thread类相关构造方法:

Thread(Runnable target,String name):target是线程执行对象,实现Runnble接口。name为线程指定一个名称

Thread(Runnable target):target是线程执行对象,实现Runnble接口。线程名称是JVM分配的

继承Thread线程类

事实上Thread类也是吸纳了Runnable接口,所以Thread类也可以作为线程执行对象,这需要继承Thread类,覆盖run()方法。

Thread类相关构造方法:

Thread(String name):name为线程指定一个名称。

Thread():线程名称是JVM分配的。

代码案例

创建子线程

//线程执行对象(子线程)
public class Runner implements Runnable {

	//编写执行线程代码
	@Override
	public void run() {
		//子线程(线程体)
		for(int i=0;i<10;i++) {
			//打印次数和线程的名字
			System.out.printf("第%d次执行-%s\n",i,Thread.currentThread().getName());
			
			try {
				//随机生成休眠时间,这里指的毫毛
				long sleepTime=(long)(1000*Math.random());
				//这里可以指定纳秒
				//Thread.sleep(sleepTime,(int) (10000*Math.random()));
				//线程休眠(这里的休眠是为了方便下一个线程的去运行)
				Thread.sleep(sleepTime);
			} catch (InterruptedException e) {
				// TODO: handle exception
			}
		}
		//线程执行结束
		System.out.println("执行完成!"+Thread.currentThread().getName());
	}
}

主线程 

public class HelloWorld {

	//主线程
	public static void main(String[] args) {
		
		//子线程
		//创建线程t1,参数是一个线程执行对象Runner
		//实例化new Runner()
		Thread t1=new Thread(new Runner());
		//开始线程t1
		t1.start();
		
		//子线程
		//创建线程t2,参数是一个线程执行对象Runner
		Thread t2=new Thread(new Runner(),"MyThread");
		//开始线程t2
		t2.start();
	}

}

可以看到两个线程交叉执行

第0次执行-Thread-0
第0次执行-MyThread
第1次执行-Thread-0
第1次执行-MyThread
第2次执行-MyThread
第2次执行-Thread-0
第3次执行-MyThread
第3次执行-Thread-0
第4次执行-Thread-0
第4次执行-MyThread
第5次执行-Thread-0
第5次执行-MyThread
第6次执行-MyThread
第6次执行-Thread-0
第7次执行-Thread-0
第7次执行-MyThread
第8次执行-Thread-0
第9次执行-Thread-0
第8次执行-MyThread
第9次执行-MyThread
执行完成!Thread-0
执行完成!MyThread

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值