线程的两种创建及线程池——学习二

本文介绍了Java中创建多线程的两种主要方法:通过实现Runnable接口和继承Thread类。对比了这两种方法的特点,并强调了启动线程时应使用Thread的start()方法而非直接调用run()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用实现接口Runnable来创建新的多线程

         创建分四步

1.实现接口Runnable并重写它唯一的方法run()

        public class MyThreadTest implements Runnable{
 public void run(){

程序code

}

}

2.创建实现Runnable类的对象,其类型是Runnable

Runnable r1 = new MyThreadTest();

3.由Runnable创建一个Thread的对象

           Thread t = new Thread(r1);

4.由thread 的对象启动线程

t.start();

package com.bing.jia;
public class MyThreadTest implements Runnable{
	public void run(){
		for(int i=0;i<100;i++){
			if(i%10==0){
				System.out.println(Thread.currentThread().getName()+"-------"+i);
			}
			System.out.println(Thread.currentThread().getName()+"    "+i);
			try {
				Thread.sleep(1000*2);
				//Thread.sleep(2000, 10000);
				System.out.println("线程睡眠2秒");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		Runnable r1 = new MyThreadTest();
		Runnable r2 = new MyThreadTest();
		new Thread(r1).start();
		new Thread(r2).start();
	}
}


执行结果:

Thread-0-------0
Thread-0    0
Thread-1-------0
Thread-1    0
线程睡眠2秒
线程睡眠2秒
Thread-0    1
Thread-1    1


二、使用继承Thread类的方法来创建新的多线程

这种方法已经不被推荐使用。如果创建的线程很多的话,推荐使用线程池来创建。
package com.bing.jia;
public class MyThreadTest extends Thread{
	public void run(){
		for(int i=0;i<100;i++){
			if(i%10==0){
				System.out.println(Thread.currentThread().getName()+"-------"+i);
			}
			System.out.println(Thread.currentThread().getName()+"    "+i);
			try {
				Thread.sleep(1000*2);
				//Thread.sleep(2000, 10000);
				System.out.println("线程睡眠2秒");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		new Thread().start();
		new Thread().start();
	}
}
执行结果:
Thread-0-------0
Thread-0    0
Thread-1-------0
Thread-1    0
线程睡眠2秒
Thread-0    1
线程睡眠2秒
Thread-1    1
线程睡眠2秒
Thread-0    2
线程睡眠2秒
Thread-1    2

注意:可见,只要现实的情况要求保证新建线程彼此相互独立,各自拥有资源,且互不干扰,采用哪个方式来创建多线程都是可以的。因为这两种方式创建的多线程程序能够实现相同的功能。

警告:不论是继承thread还是实现Runnable来创建线程,都不要直接调用run()方法,这样只会执行线程中的任务,但是它不会创建一个线程。不论以何种方式创建线程,都是用Tread.start()方法,这个方法将创建一个执行run()方法的新线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值