2021.12.14学习记录

一、线程实现的两种方式

线程实现的两种方式:

1)直接继承Thread类,实现线程

使用方法:

public class MyThread extends Thread{

        代码块}

Thread t = new MyThread()

t.start

2)实现Runnable接口

使用方法:

public class MyRunnable implements Runnable{

        代码块}

MyRunnable mr = new Runnable()

Thread t = new MyThread(mr)

t.start

注:不管是在Thread类里面还是在Runnable接口里面,都有一个run方法,但是启动线程并不是靠调用run方法,而是在外部使用start方法

二、线程的休眠

public static void sleep(long millmils)

使用此方法,让线程休眠进入休眠,即让线程暂停指定时间,释放资源,给其他线程使用,线程休眠不会丢失显示器的所有权

存在的异常:

IllegalArgumentException:当休眠时间为负数,抛出此异常

当线程中断此线程,抛出此异常,中断被清除

三、join与中断线程

join:等待这个线程死亡,即等待调用此方法的线程执行完毕,其他线程才会继续执行

中断线程:public void interrupted()

强行让线程暂停执行,当该线程进入休眠时,外部的中断无效,只有自己调用的中断方法才会使得中断执行

四、守护线程

public static void setDaemon(boolean b):将一个线程标记为守护线程

当进程中剩下的唯一一个线程是守护线程时,JVM会退出程序 

public static void yield():调用此方法时,会暂停此线程,执行其他线程

五、线程同步

在一个进程中只有一个资源时,有可能会使得多个进程共享一个资源

为了解决共享问题,引入线程同步问题

线程同步问题:

在一个时间段,最多只能有一个线程访问该资源,然后将该资源锁住,直到该线程释放资源,其余线程才能访问

同步的方法:

1)代码块

synchronized(要同步的对象,可以使用直接使用this表示){

同步的操作

}

2)同步方法

public synchronized void method(){

要同步的操作

}

3)Lock

Lock是一个接口,其实现类是ReentrantLock

注:

1、尽量保证代码简洁,将对线程同步没有作用的代码移除作用区域

2、不要阻塞

3、在持有锁的时候,不要访问其他对象

4、多线程具有安全问题,同步操作能解决安全问题,但是会牺牲性能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值