java 线程《三》Thread 方法

博客介绍了测试线程是否处于活动状态的方法,包括被Thread对象调用的方法和Thread类的静态方法。还提及wait和notify是Object上的方法,sleep是Thread类方法,sleep不释放锁,wait释放锁,多线程中锁指对象锁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#列表
在这里插入图片描述

测试线程是否处于活动状态。 上述方法是被Thread对象调用的。下面的方法是Thread类的静态方法。

在这里插入图片描述

package com.javabase;

//实现多线程的第二种方式: 实现runnable接口
public class RunableDemo3 implements Runnable {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(Thread.currentThread().getName());
		RunableDemo3 r1=new RunableDemo3();
		//new了Thread以后, 线程状态:新建
		Thread t1=new Thread(r1);
		t1.setName("自定义线程名字-t1");
		//最高10, 最低1, 默认5
		//优先级别越高,抢到CPU的概率越大
		t1.setPriority(10);
		//执行start以后,线程状态:就绪
		//new了Thread以后, 线程状态:新建
		Thread t2=new Thread(r1);
		t2.setName("自定义线程名字-t2");
		//最高10, 最低1, 默认5
		t2.setPriority(1);
		
		
		Thread t3=new Thread(r1);
		t3.setName("自定义线程名字-t3");
		//最高10, 最低1, 默认5
		//优先级别越高,抢到CPU的概率越大
		t3.setPriority(10);
	
		t2.start();
		t1.start();
		t3.start();
	}

	//执行run方法,线程状态:运行
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("RunableDemo>>run");
		System.out.println(Thread.currentThread().getName());
		/**
		 * Thread.yield( )方法:

			使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。
			
			用了yield方法后,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
		 */
		Thread.yield();
		System.out.println("RunableDemo>>run--2");
		System.out.println(Thread.currentThread().getName());
	}

}

main
RunableDemo>>run
自定义线程名字-t3
RunableDemo>>run
自定义线程名字-t1
RunableDemo>>run–2
自定义线程名字-t3
RunableDemo>>run–2
自定义线程名字-t1
RunableDemo>>run
自定义线程名字-t2
RunableDemo>>run–2
自定义线程名字-t2

wait和notify

  • wait和notify 是Object上的方法
  • sleep是Thread类里面的方法
  • sleep不会释放锁
  • wait会释放锁
  • 多线程中,所有的锁,都是指对象锁
package com.zz.thread;

/**
 * @Description: java类作用描述
 * @Author: Bsea
 * @CreateDate: 2019/9/21$ 20:35$
 */
public class Test5 {

    public static void main(String[] args) {
        Test5 test5=new Test5();
        Thread t1=new Thread(
            new Runnable(){

                @Override
                public void run() {
                    test5.t1();
                }
            }
            );

        Thread t2=new Thread(
                new Runnable(){

                    @Override
                    public void run() {
                        test5.t2();
                    }
                }
        );

        t1.start();
        t2.start();
    };
    public synchronized  void t1(){
        try {
            System.out.println("开始等待");
            wait();
            System.out.println("被叫醒");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public synchronized  void t2(){
        System.out.println("开始叫醒");
        notify();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值