java多线程

一、多线程开启方法:

1、继承thread类,重写run方法,并调用start方法执行。

thread的start方法一旦执行,系统会另外开辟一个栈空间。导致此线程开始执行; Java虚拟机调用此线程的run方法。

String getName():返回此线程的名称。
static Thread currentThread():返回对当前正在执行的线程对象的引用。
static void  sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。

2、runnable接口实现

二、实现runnable接口的好处:

 

 

三、匿名内部类的两种使用方法:

1、

 

2、

 四、线程安全问题解决方案

1、同步代码块synchronized

2、同步方法

 3、静态同步方法

 4、lock锁

 5、等待唤醒机制

1、需要使用的方法

sleep(long millis)

使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。
wait()
导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。
notify()
唤醒正在等待对象监视器的单个线程。
notifyAll()
唤醒正在等待对象监视器的所有线程。

2、调用wait和notify方法需要注意的细节

 

 6、线程池

7、Lambda表达式

简介

Lambda表达式用一个表达式提供了一个实现单个接口方法(函数式接口)的简洁明了的方式。他允许你减少你必须创建和维护的代码数量,它经常被用作匿名内部类的替代。

1.替代匿名内部类

毫无疑问,lambda表达式用得最多的场合就是替代匿名内部类,而实现Runnable接口是匿名内部类的经典例子。lambda表达式的功能相当强大,用()->就可以代替整个匿名内部类!请看代码:

如果使用匿名内部类:

    @Test
    public void oldRunable() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("The old runable now is using!");
            }
        }).start();
    }

而如果使用lambda表达式:

    @Test
    public void runable() {
        new Thread(() -> System.out.println("It's a lambda function!")).start();
    }

 

 

 

 

 

 

 

 
 
posted @ 2021-01-20 23:46  乐易196  阅读(33)  评论(0)    收藏  举报