Thread 复习

线程是什么

进程运行的程序,有独立的内存

线程作用,完成进程中的单个任务

安装在ROM,运行时加载到RAM

程序运行原理:分时调度(平均分配每个线程占用CPU时间);抢占式调度(优先级高的线程优先使用CPU)

创建线程的2中方式

1、继承Thread实现run 方法,中需要开启线程的地方调用start() 就可以

public class MyThread extends Thread{
    public MyThread(String name){
        super(name);
    }

    @Override
    public void run() {
        //TODO 线程中需要执行的逻辑
    }
}
//第一种创建线程
MyThread myThread = new MyThread("第一种创建线程");
myThread.start();

2、Runnable 实现类对象,传入Thread

public class MThread implements Runnable{
    @Override
    public void run() {
        //TODO 线程中需要执行的逻辑
    }
}

//第二种创建线程

Thread mThread = new Thread(new MThread());
mThread.start();

补充:start()  开启线程 jvm 告诉CPU 去执行任务代码

 

 

如何保证线程安全

多个线程操作同一个共享数据时,可能出现线程安全问题,为了保证每个线程都能执行原子操作,线程同步机制

三种解决线程安全的方法

同步代码块

synchronized(同步锁){ 需要同步操作的代码 }  注意,一个线程仅有一个同步锁

同步方法

public synchronized void method(){ 可能会产生线程安全问题的代码 }

Lock锁

public void lock() :加同步锁。

public void unlock() :释放同步锁。

线程状态

NEW(新建)

Runnable(可 运行)

Blocked(锁阻 塞)

Teminated(被 终止)

Waiting(无限 等待)        wait()   notify() 唤醒线程

Timed Waiting(计时 等待)  定时唤醒

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值