多线程日记(17.5.4)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程日记(17.5.4)相关的知识,希望对你有一定的参考价值。

 

1.线程的等待与唤醒wait()和notify();

public class Test{
    public static void main(String[]args){
        Thread thread1=new NewThread("t1");
        synchronized(thread1){
            System.out.println(Thread.currentThread().getName()+" is running");
            thread1.start();
            System.out.println(Thread.currentThread().getName()+" is running");
            try{
                thread1.wait();
                System.out.println(Thread.currentThread().getName()+" is running");
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}
class NewThread extends Thread{
    public NewThread(String name){
        super(name);
    }
    public void run(){
        synchronized(this){
            System.out.println(Thread.currentThread().getName()+":"+"notify");
            this.notify();
        }
    }
}

线程thread1是在main这个主线程上创建的,所以一开始运行的时主线程main,当thread1调用start方法,处于就绪状态,直到main被阻塞,cpu允许threadd1执行,会输出thread1:notify,直到thread1调用wait()方法被进行无线等待,最后main()进行运行。

如下程序:main运行→thread1调用start()方法运行→然后让thread1调用wait()方法进行等待→主线程main运行.

public class Test{
    public static void main(String[]args){
        Thread thread1=new NewThread("t1");
        synchronized(thread1){
            try{
                System.out.println(Thread.currentThread().getName()+":"+"running");
                //start thread1
                thread1.start();
                //thread1 wait
                thread1.wait(10000);
                System.out.println(Thread.currentThread().getName()+":"+"running");
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}
class NewThread extends Thread{
    public NewThread(String name){
        super(name);
    }
    public void run(){
        synchronized(this){
            System.out.println(Thread.currentThread().getName()+":"+"running");
        }
    }
}

以上是关于多线程日记(17.5.4)的主要内容,如果未能解决你的问题,请参考以下文章

java学习日记 多线程

新兵日记--java多线程学习  --如何创建线程

多线程 Thread 线程同步 synchronized

多个用户访问同一段代码

爬虫日记(93):Twisted的设计模型

线程学习知识点总结