首页 > 其他分享 >线程

线程

时间:2023-03-27 19:13:42浏览次数:30  
标签:同步 synchronized lock 代码 线程 方法

1、线程的生命周期

 

 

 

 2、线程的安全问题

因为线程在执行时,有随机性,CPU的执行权随时有可能被抢走。

解决方法:把操作共享的代码锁起来

 

3、同步代码块

把操作共享的代码锁起来

 格式:

synchronized(锁){

操作共享数据的代码

}

特点1:锁默认打开,有一个线程进去了,锁自动关闭

特点2:里面的代码全部执行完毕,线程出来,锁自动打开

注意:锁对象一定要是唯一的,所以在定义的锁对象前加一个static静态关键字。

e.g  static Object obj = new Object();

也可以直接把 当前类名.class作为锁对象,因为当前类名.class也是唯一的

 

4、同步方法

就是把synchronized关键字加到方法上,把方法的全部代码锁起来。

格式:

修饰符 synchronized 返回值类型 方法名(方法参数){...}

特点1:同步方法是锁住方法里面所有的代码

特点2:锁对象不能自己指定(非静态:this;静态:当前类的字节码文件对象)

补充:

将StringBuildder的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer。因为StringBuffer的方法是同步方法,而StringBuilder不是。

 

5、Lock锁

 

 Lock lock = new ReentrantLock();

//加锁

lock.lock();

//释放锁

lock.unlock();

 

6、死锁

出现情景:有锁嵌套、

所以,我们在写锁的时候不要让两个锁嵌套起来。

标签:同步,synchronized,lock,代码,线程,方法
From: https://www.cnblogs.com/qiqi-yi/p/17262537.html

相关文章

  • 多线程中常见的成员方法
     MyThreadt=newMyThread();1、StringgetName()细节:如果没有给线程设置名字,线程也是有默认的名字的格式:Thread-X(X序号,从0开始)2、voidsetName(Stringname)细......
  • 【线程池】使用ThreadLocal请务必remove
    背景:在一次扫描中被提示:Field[SESSION_CONTEXT]oftypeThreadLocalmustcallremove()methodatleastonetimes.(line34)嗯?啥子情况?搜索了一下,发现:ThreadLo......
  • 原来还能这样看Java线程的状态及转换
    作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、JAVA底层、面试、职业成长相关资料等更多精彩文章在公众号「小牛呼噜噜」大家好,我是呼噜噜,最近一直在梳理Jav......
  • 线程安全
    1.代码所在的进程含有多个线程,线程可能会同时运行这段代码,若所有的运行结果是相同的,且其他变量的值也和预期的是一样的,就是线程安全的。2.通常线程不安全的对象都是由全......
  • 线程和进程的区别【Android面试送命题】
    这道题面试出现的概率是百分之70下面我来讲下如何回答1,进程是资源管理的最小单位,线程是程序执行的最小单位2,每个进程都有自己的数据段代码段和堆栈段。线程通常叫做轻型......
  • 多线程
    1、概念线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。进程:进程是程序的基本执行实体。多线程:有了多线程,就可以让程序同......
  • start线程开启(C源码分析)
    一个线程开启都经历了什么publicclassThreadBaseDemo{publicstaticvoidmain(String[]args){Threadt1=newThread(()->{},"t1");......
  • 多线程的同步和互斥—线程的信号量
    同步://account.h#ifndef_ACCOUNT_H#define_ACCOUNT_H#include<pthread.h>#include<semaphore.h>typedefstruct{intcode;doublebalance;......
  • Python多任务-多线程-多进程-协程-进阶学习
    --多任务-多线程-多进程-协程-进阶学习--文中所提到的案例参考:GITHUB中项目文件夹https://github.com/FangbaiZhang/Python_advanced_learning/tree/master/02_Python_ad......
  • Task 类 多线程
    Task类定义命名空间: System.Threading.Tasks程序集:System.Runtime.dll表示一个异步操作publicclassTask:IAsyncResult,IDisposable继承  Object->Task......