Thread类方法解析

1、静态方法

static void sleep(long millis)	//睡眠线程
static void yield()  			//礼让线程(“就是客气客气,不一定真让”)

代码示例:

void main(){
	Thread.sleep(1000);	
}

当前线程(main线程)进入阻塞状态,让出CPU时间片给其他线程,时间到期,当前线程继续执行;在同步代码中,不会释放当前线程持有的锁;

void main(){
	Thread.yield();
} 

当前线程返回就绪状态,让出CPU时间片,但不保证其他线程一定能抢到CPU时间片(因为线程调度器可能会忽视这个CPU时间片);在同步代码中,不会释放当前线程持有的锁;

2、常规方法

String getName()  		//返回该线程的名称。

void setName(String name) 	//改变线程名称,使之与参数 name 相同。

int getPriority()   		//返回线程的优先级。

void setPriority(int newPriority)  //更改线程的优先级。

void setDaemon(boolean on)  		//将该线程标记为守护线程或用户线程。

boolean isDaemon()  		//测试该线程是否为守护线程


void interrupt()   //中断线程

void join()  		//其他线程等待该线程终止

void run()   		//线程体,线程执行的具体内容,本质只是Thread类的一个普通方法

void start() 		//启动线程,进入就绪状态,等待CPU时间片

代码示例:

new Thread(new Runnable() {
    @Override
    public void run() {
        SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");
        //输出系统时间的时分秒。每隔一秒显示一次。可能会出现跳秒的情况,因为阻塞1秒过后进入runnable状态,等待分配时间片进入running状态后还需要一点时间
        while(true){
            try {
                Thread.sleep(1000);

            } catch (InterruptedException e) {
                 e.printStackTrace();

            }
             System.out.println(format.format(new Date()));
          }
    }
}).start(); 

run方法:定义线程体,即线程执行的具体内容,本质只是Thread类的一个普通方法;
start方法:启动线程,进入就绪状态,等待CPU时间片;

3、继承Object的方法

void wait()
void notify()   
void notifyAll()       

说明:

同步代码中,使用wait/notify,保证线程同步;
wait方法会释放当前线程持有的锁;当前线程进入阻塞状态;
notify方法会使当前线程获取锁;当前线程返回就绪状态;

4、深入源码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值