2021-06-28 Java语言高级8

目录

一、创建多线程

二、线程安全问题


一、创建多线程

 java.lang.Thread类

创建多线程程序的第一种方式:创建Thread类的子类。

多线程原理随机性打印结果:

2021-06-28 Java语言高级8

多线程原理多线程内存图解:

2021-06-28 Java语言高级8

获取线程的名称:                                                                                                                                                    1.String getName()  返回该线程的名称。                                                                                                      2.static Thread currentThread()  返回对当前正在执行的线程对象的引用。

设置线程的名称(了解):                                                                                                                                    1.void setName(String name):改变线程名称,使之与参数 name相同。                                              2.创建一个带参的构造方法,参数传递线程的名称;调用父类的带参构造方法,把线程名称传递给父类。

Thread类常用方法

public static void sleep(long millis):是当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。

创建多线程程序的第一种方式:实现Runnable接口

java.lang.Runnable接口:应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。

java.lang.Thread类的构造方法:                                                                                                                           Thread(Runnable target):分配新的 Thread 对象。                                                                                   Thread(Runnable target,String name):分配新的 Thread 对象。

实现Runnable接口创建多线程程序的好处:                                                                                                        1.避免了单继承的局限性。                                                                                                                              2.增强了程序的扩展性,降低了程序的耦合性(解耦)。

二、线程安全问题

线程安全问题的概述:

2021-06-28 Java语言高级8

线程安全问题产生的原理:

2021-06-28 Java语言高级8

解决线程安全问题的第一种方案:使用同步代码块

格式

synchronized(锁对象){
    可能会出现线程安全问题的代码(访问了共享数据的代码)
}

注意:                                                                                                                                                                       1.通过代码块中的锁对象,可以使用任意的对象。                                                                                     2.必须保证多个线程使用的锁对象是同一个。                                                                                             3.锁对象作用:把同步代码块锁住,只让一个线程在同步代码块中执行。

同步技术的原理:2021-06-28 Java语言高级8

解决线程安全问题的第二种方案:使用同步方法

格式

修饰符 synchronized 返回值类型 方法名(参数列表){
    可能会出现线程安全问题的代码(访问了共享数据的代码)
}

解决线程安全问题的第三种方案:使用Lock锁

java.util.concurrent.locks.Lock接口

Lock接口中的方法:void lock():获取锁。                                                                                                                                      void unlock():释放锁。                                                                                              java.util.concurrent.locks.ReentrantLock implements Lock接口

上一篇:遇见这么刁钻的面试题怎么办???Java怎么利用线程工厂监控线程池


下一篇:从“设计思想”到“源码解读”,一步一步深入解析Java线程池!