课间10分钟回顾线程

程序:为了完成某种目的用某种语言完成的一组指令集合(静态代码),安装到硬盘上

进程:运行时的程序,是操作系统分配的最小单位

线程:线程是进程的最小执行单元,是操作系统进行任务调度的最小单元

主线程负责启动程序(类似于java中的main方法,启动Java主线程)

一个进程可以包含多个线程,线程不能脱离进程而存在

一个进程中的所有线程共享一个进程中的资源

一个线程只能属于一个进程

创建线程

继承Thread类的方式
定义:
public class MyThread extends Thread {
public void run() {
}
}
调用:
MyThread thread = new MyThread();
thread.start();
实现Runnable接口的方式
java.lang.Runnable接口中仅仅只有一个抽象方法:
public void run()
也可以通过实现Runnable接口的方式来实现线程,只需要实现其中的run方法即可;
Runnable接口的存在主要是为了解决Java中不允许多继承的问题。
定义:
public class MyThread implements Runnable{
@Override
public void run() {
……
}
}
线程执行任务
MyThread r = new MyThread();
创建一个线程作为外壳,将r包起来,
Thread thread = new Thread(r);
thread.start();
继承方式和实现方式的联系与区别
【区别】
继承Thread: 线程代码存放Thread子类run方法中。
实现Runnable:线程代码存在接口的子类的run方法。
【实现Runnable的好处】
1)避免了单继承的局限性
2)多个线程可以共享同一个接口实现类的对象,非常适合多个相同线程来处
理同一份资源。

线程在它的生命周期中有不同的状态:

1.新建2.就绪3.阻塞4.运行5.死亡 

多线程

在一个进程中同时有多个线程,java语言中支持多线程

优点:提高程序处理速度,提高cpu利用率

缺点:多个线程对一个共享资源进行访问

问:如何解决多线程访问共享资源?

答:

1.使用synchronized关键字

2.使用lock接口的实验类

1.使用synchronized关键字

修饰方法:

非静态方法:锁对象默认是this

静态方法:锁标志对象是类的class对象,只要是一个类的对象,那么他们的Class对象是相同的

修饰代码块:

只对某段代码块进行加锁,需要自己传入一个锁对象,要求锁对象必须是唯一的。

实现是依赖底层的指令来控制,是隐式的,自动的添加,自动式方法

2.使用Lock接口下的实现类

是java代码层面的控制,只能对某段代码进行加锁和控制

lock()

unlock()

只能手动添加,手动上方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值