多线程

Posted yang-1023

tags:

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

多线程

创建线程的两种方式

1.继承Thread类,重写它的run方法;

2.实现Runnable接口,重写它的run方法;

延时睡眠

sleep(延时)使线程休眠不会释放锁

线程终止

定义一个标志位flag=false,不推荐使用stop(),destroy()方法

线程强制执行

join,可以想象成插队,等此线程执行完后,再执行其他线程,否则其他线程堵塞

线程通信(不同线程之间的消息传递)

wait(),notify()两个方法在一起使用

wait() 使线程处于等待状态(可加参数,设置等待豪秒数),会释放锁,

notyfy唤醒一个等待的线程,notifyall唤醒同一个对象上所有调用wait()方法的线

线程礼让

yield(),现有a,b两个线程,a先进入cpu执行,a调用yield(a从cpu中出来),使线程a处于就绪状态,然后cpu再随机调度其中一个线程

线程安全

加锁的两种方式:

synchronizey(隐式锁),lock(显示锁)

区别:

synchronizey可以作用在方法和代码块(参数)上,lock lock只能作用在代码块 lock.lock加锁 lock.unlock释放锁

死锁

某一同步块拥有两个以上对象的锁时,可能发生死锁

处理方法:

避免两条线程同时拥有一个锁

线程池

两个相关api :Executors(线程池工具类) ExecutorService(线程池接口),通过这两个api创建线程池,设置线程池大小, 用execute方法把线程放入线程池,用完要用shutdown方法结束线程池

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

什么是多线程,多进程?

多线程和多进程模式有啥区别

多线程Java多线程学习笔记 | 多线程基础知识

java中啥叫做线程?啥叫多线程?多线程的特点是啥

c++ 多线程与c多线程有啥区别?

IOS多线程安全(线程锁)