为了账号安全,请及时绑定邮箱和手机立即绑定

【 Thread】创建线程的2种方法

标签:
Java

(一)Thread类

1.结构

java.lang.Object

  |---java.lang.Thread


2.创建线程的两种方法

(1)一种方法是将类声明为Thread的子类,该子类应重写Thread类的run方法

class PrimeThread extends Thread {         long minPrime;         PrimeThread(long minPrime) {             this.minPrime = minPrime;         }          public void run() {             // compute primes larger than minPrime              . . .         }}PrimeThread p = new PrimeThread(143);p.start();


(2)创建线程的另一种方法是声明实现Runnable接口的类,然后该类实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动

(3)这种方法给已经实现继承的类,提供了实现多线程的扩展方法,实现接口

class PrimeRun implements Runnable {         long minPrime;         PrimeRun(long minPrime) {             this.minPrime = minPrime;         }          public void run() {             // compute primes larger than minPrime              . . .         }}PrimeRun p = new PrimeRun(143);new Thread(p).start();


代码1:第一种创建线程的方法

MyThread类

// 1.继承Thread类public class MyThread extends Thread{		private String threadName;		public MyThread() {		super();	}	// 提供一个有参的构造法方法,把名字传给父类的构造方法直接传递一个线程的名字	public MyThread(String threadName) {		super(threadName);		this.threadName = threadName;	}	// 2.重写run方法	@Override	public void run() {		for(int i=0;i<5;i++) {			System.out.println(this.getName()+": hello : "+i);		}	}}

Main

public class Main {	public static void main(String[] args) {		//no_parameter_construction_method();		threadName_construction_method();	}		/**	 * 1.调用无参数的构造方法创建线程对象和设置线程名字	 * */	public static void no_parameter_construction_method() {		// 3.创建线程的实例对象		MyThread my1=new MyThread();		MyThread my2=new MyThread();		// 4.可以设置线程的名字,不设置默认使用JVM给分配的名字(Thread-N)		my1.setName("线程1");		my2.setName("线程2");		// 5.启动线程		// 调用run()的话,的就是单纯的调用方法		// 调用线程应该使用start()方法		my1.start();		my2.start();		System.out.println("end");	}		public static void threadName_construction_method() {		// 3.创建线程的实例对象		MyThread my3=new MyThread("线程3");		MyThread my4=new MyThread("线程4");		// 4.启动线程		my3.start();		my4.start();		System.out.println("end");	}}

代码1:第二种创建线程的方法

OurThread类

// 1.实现Runnable接口public class OurThread implements Runnable{	// 2.重写run方法	@Override	public void run() {		for(int i=0;i<10;i++) {			// 3.获取当前线程名字			System.out.println(Thread.currentThread().getName()+": 你好 : "+i);		}	}}

Main

public class Main {	public static void main(String[] args) {		// 这2个方法调用,不会等待上一个方法完事后,下一个方法才开始,而是不阻塞直接就开始		createThread();		createNameThread();	}		public static void createThread() {		// 4.创建实现接口类对象		// 5.创建线程		OurThread ot1=new OurThread();		Thread t1=new Thread(ot1);				OurThread ot2=new OurThread();		Thread t2=new Thread(ot2);		t1.start();		t2.start();		System.out.println("end");	}		public static void createNameThread() {		// 4.创建实现接口类对象		// 5.创建线程,可以带名字,不带则使用JVM默认分配的名字		OurThread ot1=new OurThread();		Thread t1=new Thread(ot1,"线程01");				OurThread ot2=new OurThread();		Thread t2=new Thread(ot2,"线程02");		t1.start();		t2.start();		System.out.println("end");	}}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消