线程--状态和方法

线程的几个状态切换图:
创建状态:new一个线程对象
就绪状态:创建状态调用start的时候,就是就绪状态,随时可以进入运行状态
运行状态:到达就绪状态状态后,各个线程抢占资源,然后进入到运行状态
阻塞状态:从运行状态到达阻塞状态一般分为:(不能直接从阻塞状态直接到运行状态)
1.thread.wait(),就是进入到阻塞状态,用thread.notify()需要手动唤醒从阻塞状态到就绪状态,
2.thread.sleep()时间到了自动唤醒进入到就绪状态
3.thread.join()就是阻塞其他线程先执行本线程,执行完后其他线程进入就绪状态.

还有一点,可以从运行状态进入到就绪状态:
使用的thread.yield();就是线程完成后,然后释放资源,让线程们再去抢夺资源,进入运行状态.

一般来说这些状态都能直接进入终止状态.

/**

  • 应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。

  • 在主程序中创建2个线程(用子类),将其中一个线程的优先级设为10,另一个线程的优先级设为6。

  • 让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。

  • @author dch
    *ring
    */
    public class Test2_2 {

    public static void main(String[] args) throws Exception {

     //创建两个线程对象,进入创建状态
     thread t1 = new Test2_2().new thread("线程1正在运行");
     thread t2 = new Test2_2().new thread("线程2正在运行");
     
     //设置线程1的优先级为10
     t1.setPriority(10);
     //设置线程2的优先级为6
     t2.setPriority(6);
     //线程1进入就绪状态
     t1.start();
     //如果想让线程1先运行完200次,再让线程2去运行.
     //用join方法,但是要放在在线程进入就绪状态前
     t1.join();
     //线程2进入就绪状态
     t2.start();
    

    }

    //一个线程类继承Thread
    class thread extends Thread{
    //线程名
    private String name;
    //无参构造器
    /*public thread(){

     	}*/
     	//有参构造器
     	public thread(String name){
     		super(name);//这里才能显示变量的内容
     		//this.name = name;
     	}
     	
     	//重写run方法
     	public void run(){
     		for (int i = 0; i < 200; i++) {
     			System.out.println(this.getName()+"-------"+i);
     			
     		}
     	}
     	
     	
     }
    

}

猜你喜欢

转载自blog.csdn.net/qq_41035395/article/details/88931278
今日推荐