进程与线程

引进线程定义是因为频繁创建销毁进程太麻烦,甚至浪费操作系统资源,所以引进线程来提升效率.

区别 :

1.进程包含了线程 ,线程被称为"轻量级进程".

2.进程是操作系统内资源分配的基本单位,线程是执行调度的基本单位.

3.同一个进程里面的线程共用同一份系统资源(包括内存/文件等),而进程里面的线程与线程各自是独立的 系统资源 (文件 ,内存).

线程 :

一.创建线程:

1.继承Thread类,重写run()方法.

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

3.使用匿名内部类 ,创建Thread子类的方法

4.使用匿名内部类,实现Runnable接口来实现创建线程

5.lambda表达式(使用最多创建

线程)

二.线程中断

1.线程创建之后  通过Boolean控制线程进行中的状态来中断线程

在后面设置来中断 

2.或者在进程开始之后强制设置中断(通过thread.interrupt()来中断)

进程开始之后 三秒打印三次"hello thread"后触发InterruptException异常后中断线程

 三.线程安全

触发线程安全的原因:

1.抢占式执行

2.多个线程执行同时修改同一个变量

3.修改过程并不是"原子的"(原子:理解为不可分割的最小单位)

4.内存可见性也会引发线程不安全问题

5.指令重排序问题

由于在线程跑起来时多个线程并没有规定哪个线程跑多哪任务 哪个线程跑多少,还可能线程正执行任务时被操作系统调度走,而去执行其他的任务.这样就会发生线程不安全的情况

四.线程阻塞

由于线程可能会发生线程不安全的情况 ,为解决这一问题便需要加锁操作 关键字为synchronize

放在访问修饰限定符后 返回值之前 public synchronize void 方法名(){};

当一个线程加锁操作之后另一线程就必须阻塞等待  ,直到前一线程解锁操作之后才可以执行任务 .这样一来就不会发生线程不安全的情况;

另外 在线程开始start()之后

调用  thread线程.join();操作来阻塞 ,可以设置休眠时间  ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值