线程常见方法

一、线程常用方法

(1)Thread.currentThread()

        获得当前线程

(2)Thread.currentThread().getName()

        获得当前线程的名称

(3)Thread.currentThread().setName(’’)

        设置当前线程的名称

public class MyThread2 implements Runnable{
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true) {
			try {
				/*
				 * Thread m = Thread.currentThread();
        		   System.out.println(m.getName());
				 * 简化形式如下:
				 */
				//currentThread()那个线程执行它,他就得到那个线程对象(当前线程对象)
				Thread.currentThread().setName("呵呵哈哈哈");
				System.out.println(Thread.currentThread().getName());
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

}

与此同时:

        1、在自定义类继承Thread类的时候,可以构造一个有参函数,传入当前线程对象设置名称,送给父类的有参数构造器初始化名称,在创建该类的对象时候,可直接传入名字

        2、在创建自定类对象的时候,通过调用该对象的setName()方法设置线程名

        3、通过getname()输出

 Thread t1 = new MyThread("线程一");
        // t1.setName("线程一");
        t1.start();
        System.out.println(t1.getName());

(4)sleep()

在指定时间内让当前执行的线程暂停执行一段时间,让其他线程有机会继续执行,但不会释放对象锁,也就是说如果有synchronized同步块,其他线程仍然不能访问共享数据,不推荐使用。sleep() 使当前线程进入阻塞状态,在指定时间不会执行,因此sleep()方法常用来暂停线程的执行,当sleep()结束后,然后转入到 Runnable(就绪状态),这样才能够得到执行的机会。

 public static void main(String[] args) throws Exception {
        for (int i = 1; i <= 5; i++) {
            System.out.println("输出:" + i);
            if(i == 3){
                // 让当前线程进入休眠状态,当i=3时候,隔3秒后再接着输出
                Thread.sleep(3000);
            }
        }
    }

(5)yield()

使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。

(6)join()

join()是Thread类的一个方法,根据jdk文档的定义,join()方法的作用,是等待这个线程结束,即当前线程等待另一个调用join()方法的线程执行结束后在往下执行。通常用于在main主线程内,等待其它调用join()方法的线程执行结束再继续执行main主线程。

(7)wait()、notify和notifyAll()

在synchronized 代码块执行,说明当前线程一定是获取了锁的。当线程执行wait()方法的时候,会释放当前的锁,然后让出CPU,进入等待状态。只有当 notify/notifyAll() 被执行时候,才会唤醒一个或多个正处于等待状态的线程,然后继续往下执行,直到执行完synchronized 代码块的代码或是中途遇到wait() ,再次释放锁。也就是说,notify/notifyAll() 的执行只是唤醒沉睡的线程,而不会立即释放锁,锁的释放要看代码块的具体执行情况。所以在编程中,尽量在使用了notify/notifyAll() 后立即退出临界区,以唤醒其他线程让其获得锁

(8)run()方法:线程任务方法

(9)start()方法:开启线程方法

 二、线程构造器

public Thread(String name):可以为当前线程指定名称

public Thread(Runnable target):把Runnable对象交给线程对象

public Thread(Runnable target,String name):把Runnable对象交给线程对象,为当前线程指定名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值