线程基础总结

线程:
(1)继承Thread类——在定义的线程中需重写Thread中的run方法。
通过继承Thread类定义线程的程序:

public class t1 extends Thread{
	public void run()
	{
		System.out.println("通过继承Thread定义线程");
	}
//创建线程对象:t1 xc=new t1();
}

(2)实现Runnable接口——Runnable接口中具有一个抽象的方法,在实现Runnable接口时需实现run方法。
通过实现Runnable接口定义线程的程序:

public class t2 implements Runnable{
	public void run()
	{
		System.out.println("通过实现Runnable接口定义线程");
	}
/*创建线程对象,要借助Thread类(Thread类有4个构造器,常用的是具有一个参数,
 *该参数是实现Runnable接口类对象的构造器):t2 xc=new t2();Thread t=new Thread(xc);
 */创建的类对象可作为多个Thread类构造器参数,即创建了多线程。
}

启动线程:

package a;

class MyRunnable implements Runnable
{
	//定义一个run线程方法
	public void run() 
	{
		System.out.println("正确启动线程");
	}
}
public class t3
{
	public static void main(String[] args)
	{
		MyRunnable mr=new MyRunnable();
		Thread t=new Thread(mr);
		t.start();//启动线程
	}
}

在调用start方法后,就启动了线程,该线程是和main方法并列执行的线程。
线程只能被启动一次,即只能调用一次start方法,多次启动线程就会发生异常。
线程生命周期:新建/准备/运行/等待阻塞/死亡

实现Runnable接口的多线程例子:

/*
 * 实现Runnable接口的类
 */
public class DoSomething implements Runnable
{
	private String name;
	public DoSomething(String name)
	{
		this.name=name;
	}
	public void run()
	{
		for(int i=0;i<5;i++)
		{
			for(long k=0;k<10000000;k++);//用来模拟一个非常耗时的操作
			System.out.println(name+": "+i);
		}
	}
}
/*
 * 测试Runnable类实现的多线程程序
 */
public class TestRunnable {
	public static void main(String[] args)
	{
		DoSomething ds1=new DoSomething("黑色");
		DoSomething ds2=new DoSomething("白色");
		Thread t1=new Thread(ds1);
		Thread t2=new Thread(ds2);
		t1.start();
		t2.start();
	}

}

在这里插入图片描述
输出的结果不一定

拓展Thread类实现的多线程例子:

/*
 * 测试拓展Thread类实现的多线程程序
 */
public class TestThread extends Thread
{
	public TestThread(String name)
	{
		super(name);
	}
	public void run()
	{
		for(int i=0;i<5;i++)
		{
			for(long k=0;k<100000000;k++);//用来模拟一个非常耗时的操作
			System.out.println(this.getName()+" :"+i);
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thread t1=new TestThread("小黑");
		Thread t2=new TestThread("小白");
		t1.start();
		t2.start();
	}
}

在这里插入图片描述
上面两个例子,输出的结果是不一定的,for(long k=0;k<100000000;k++);用来模拟一个非常耗时的操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值