java多线程
一、多线程开启方法:
1、继承thread类,重写run方法,并调用start方法执行。
thread的start方法一旦执行,系统会另外开辟一个栈空间。导致此线程开始执行; Java虚拟机调用此线程的run方法。
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()方法。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();
}

浙公网安备 33010602011771号