ITPub博客

首页 > IT职业 > IT生活 > 【 Thread】创建线程的2种方法

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

IT生活 作者:dapan 时间:2021-09-09 09:52:45 0 删除 编辑

(一)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

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

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");	}}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/758/viewspace-2813956/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: jQuery的技巧01
请登录后发表评论 登录
全部评论

注册时间:2020-08-07

  • 博文量
    4504
  • 访问量
    87618