java多线程个人学习笔记

JAVA多线程个人学习笔记

进程可以理解为一个可以独立运行的程序单位,进程是由一个或多个线程组成的,每一个线程就是进程中的一条执行路径.

并发(多线程)是指一个处理器同时处理多个任务。

并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。

多线程程序优点:

   1、提高程序响应

   2、提高计算机CPU利用率

   3、将复杂进程分为多个线程独立运行,利于理解和修改

线程的生命周期-五种状态:新建、就绪、运行、阻塞、死亡。


创建新线程的3种方法

直接实现Runnable接口

   避免了java单继承的局限新

   适合多线程操作一份资源

继承java.lang.Thread类(同时实现了Runnable接口)

   *由于Java只支持单继承,所以用继承的方式创建线程,比较死板,不够灵活*

实现Callable接口,拥有返回值


继承Thread类创建新线程,在子类中重写父类的run()方法,开启线程时执行子类的start()方法开启线程。
java多线程个人学习笔记_第1张图片

Thread类中方法:

start():启动线程并执行run()方法

run():放入子线程要执行的功能代码

currentThread():调取当前的线程

currentThread().getName():获取当前线程名==字

currentThread().setName():设置当前线程的名字

yield():调用此方法的线程的释放CPU执行权(让后面第一个排队的先进)

join():在A线程中执行B线程的join()方法,A线程停止执行,直至B线程执行完再执行

isAlive():判断当前线程存活(返回boolean)

currentThread().sleep(long1):让当前线程睡眠1毫秒

只能在同步方法或同步块中使用

wait() :暂停该线程

notify()和 notifyAll():唤醒某个暂停的线程、唤醒所有暂停的线程

实现Runnable接口重写run方法,实例化接口实现类传递给Thread实例化对象开启新线程java多线程个人学习笔记_第2张图片


线程安全问题:

   一个线程在操作共享数据过程中,另外的线程参与进来,导致出现安全问题。

使用同步解决安全问题

1、同步代码块(自动锁):将一段代码锁住,当有线程操作其中代码(拿到锁),其他线程无法操作,直至锁被放开。

synchronized(同步监视器){

同步代码块(操作共享数据的代码)

}

共享数据:多个线程操作同一个数据(变量)

同步监视器(锁):由一个类的对象充当。哪个线程获取此监视器,就去执行同步代码块。

java多线程个人学习笔记_第3张图片

2、同步方法:将操作共享数据的代码声明为synchronized同步方法,当一个 线程使用此方法时,其他线程无法使用此方法。

锁默认为当前对象this。

java多线程个人学习笔记_第4张图片


线程的死锁:不同的线程都占用了对方需要的同步资源,都不放弃资源再等待对方放弃,就形成了线程的死锁。

你可能感兴趣的:(java)