about 线程

线程的创建方式

一、继承Thread类,重写run()方法
public class ThreadTest extends Thread{
    @Override
	public void run() {//重写的run()方法,该方法声明此线程需要执行的操作
		for(int i=1;i<10;i++) {
			System.out.println(i);
		}
	}
}
//测试类中调用start()方法启动线程
public static void main(String[] args){
		ThreadTest t1 = new ThreadTest();
		t1.start();
}
二、实现Runnable接口,重写run()方法
public class ThreadTest implements Runnable{

	@Override
	public void run() {
		for(int i=1;i<100;i++) {
			System.out.println(i);
		}
	}
}
//创建一个实现Runnable接口的实例。将该实例作为形参传递给Thread构造器,通过Thread类的实例调用start()方法开启线程
public static void main(String[] args){
		ThreadTest t1 = new ThreadTest();
		Thread t = new Thread(t1);
		t.start();
}

以上两种方式优先选用实现Runnable接口的方法,因为实现Runable接口的方式没有单继承的局限性,适合处理多个线程有共享数据的情况。

三、实现Callable接口,重写Call()方法

Callable可以在任务结束的时候提供一个返回值,Runnable无法提供这个功能
Callable的call方法分可以抛出异常,而Runnable的run方法不能抛出异常。
Callable是支持泛型的

四、采用线程池方式

创建多个线程,等到要用的时候就去线程池中取,用完又放回线程池,避免了频繁的创建线程,节省资源

三,四两种创建线程的方式为JDK1.5新增

一些相关方法

Thread类中的相关方法
1.start():启动当前线程,调用当前线程run()方法
2.run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
3.currentThread():获得当前线程
4.getName():获得线程的名字
5.setName():设置线程的名字
6.yield():释放当前cpu的执行权
7.join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b执行完以后,线程a才结束阻塞状态
8.stop():强制结束线程,已被淘汰,不推荐使用
9.sleep():让当前线程睡眠指定的毫秒数,在指定的毫秒数内都是处于阻塞状态,sleep()使用会抛异常,需要处理try-catch
10.isAlive:判断线程是否存活

Object中相关方法
wait():调用此方法,让线程等待,在此过程中,线程会释放锁,并且需要调用notify()或notifyAll()唤醒
notify():唤醒当前被wait()的线程
notifyAll():唤醒所有在等待的线程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值