关于线程与进程的常用知识点

1.线程和进程的基本概念
1. 线程是操作系统调度的最小单元,它可以让一个进程并发地处理多个任务,也叫轻量级进程。所以,在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈、局部变量,并且能够共享进程内的资源。由于共享资源,处理器便可以在这些线程之间快速切换,从而让使用者感觉这些线程在同时执行。 总的来说,操作系统可以同时执行多个任务,每个任务就是一个进程。
2. 进程可以同时执行多个任务,每个任务就是一个线程。一个程序运行之后至少有一个进程,而一个进程可以包含多个线程,但至少要包含一个线程。

2.线程和进程的区别
线程(Thread)与进程(Process) :
1. 进程定义的是应用程序与应用程序之间的边界,通常来说一个进程就代表一个与之对应的应用程序。不同的进程之间不能共享代码和数据空间,而同一进程的不同线程可以共享代码和数据空间。
2. 一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。
3. 实现线程的三种方式:继承Thread类,实现Runable接口/callable接口

3.线程的创建方式
创建线程有3种方式:

  1. 继承Thread类,重写run()方法;
  2. 实现Runnable接口,并实现该接口的run()方法;推荐实现Runnable接口的方式。
  3. 实现Callable接口,重写call()方法。
    前两种方式线程执行完后都没有返回值,最后一种带返回值;

4.进程之间的通信方式

  1. 如果线程间采用synchronized来保证线程安全,则采用wait、notify、notifyAll来实现线程通信
  2. 如果线程间采用Lock来保证线程安全,则采用await\singal\singalAll
  3. 通过消息队列进行通信

5. 线程的状态有哪些
总体来说:创建、就绪、运行、阻塞、销毁。
4. new一个线程后就是创建状态,
5. . 执行start()方法后处于就绪状态,. 处于就绪状态的线程获取了cpu之后,
6. 就开始执行run()方法,这时属于运行状态,
7. 当调用sleep()方法时就进入了人阻塞状态,最
8. 后run()方法执行完或者抛出一个异常时就销毁了。

6 多线程编程中wait()和sleep()方法的区别

wait()sleep()
所属的类型Object类的实例方法,调用该方法的线程将进入WTING状态Thread类的静态方法,调用该方法的线程将进入TIMED_WTING状态。
对锁的依赖synchronized锁,不依赖于任何锁
返回的条件(理解为:开锁)需要由notify()/notifyAll()唤醒,从而返回超时时间到达后自动返回

7 怎么保证线程安全
1.原子类.遵循CAS+自旋原则,即“比较和替换”适用于解决单共享变量线程安全问题
关于CAS:compare and sway:比较和交换
cas算法中三个重要的概念:V:当前内存中的值 E:期待值 N:要修改的值;
思想:不断的判断V是否与E相同,相同更新V的值为N,不相同就不断的获取最新的E==》这个过程就叫做自旋
2.volatile关键字,轻量化的synchronize,适用解决单共享变量的线程安全问题。
3.加锁;加锁有两种方式:synchronize关键字和lock接口,适用解决多共享变量的线程安全问题

8 synchronized和Lock有什么区别

  1. synchronized是同步锁,可以修饰静态方法、普通方法和代码块。修饰静态方法时锁住的是类对象,修饰普通方法时锁住的是实例对象。当一个线程获取锁时,其他线程想要访问当前资源只能等当前线程释放锁。
  2. synchronized是java的关键字,Lock是一个接口。
  3. synchronized可以作用在代码块和方法上,Lock只能用在代码里。
  4. synchronized在代码执行完或出现异常时会自动释放锁,Locl不会自动释放,需要在finally中释放。
  5. synchronized会导致线程拿不到锁一直等待,Lock可以设置获取锁失败的超时时间。
  6. synchronized无法获知是否获取锁成功,Lock则可以通过tryLock判断是否加锁成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值