线程的基本知识

线程,又称轻量级进程(Light Weight Process)。 程序中的一个顺序控制流程,同时也是CPU的基本调度单位。 进程由多个线程组成,彼此间完成不同的工作,交替执行, 称为多线程
进程与线程的区别
• 进程是操作系统资源分配的基本单位,而线程是CPU的基本调度单位。
• 一个程序运行后至少有一个进程。
• 一个进程可以包含多个线程,但是至少需要有一个线程。
• 进程间不能共享数据段地址,但同进程的线程之间可以。
线程的组成:
• CPU时间片:操作系统(OS)会为每个线程分配执行时间。
• 运行数据:
• 堆空间:存储线程需使用的对象,多个线程可以共享堆中的对象。
• 栈空间:存储线程需使用的局部变量,每个线程都拥有独立的栈。
• 线程的逻辑代码。
创建线程的第一种------继承Thread
代码格式:
public class TestCreateThread {
    public static void main(String[] args) {
           MyThread t1 =new MyThread();
           t1.start();
    }
}
class MyThread extends Thread{
    @Override
    public void run() {
        for(int i = 1;i<=20;i++){
            System.out.println("mythread"+i);
        }
    }
}

第二种——————runnable接口

代码格式:

public class TestCreateThread {
    public static void main(String[] args) {
        MyRunnable m1 = new MyRunnable();
        Thread t2 =new Thread(m1);
        t2.start();

    }
}
class MyRunnable implements Runnable{
    @Override
    public void run() {
        for(int i = 1;i<=20;i++){
//            System.out.println("myrunnable"+i);
    }
}

常见方法:
• 休眠: • public static void sleep(long millis) • 当前线程主动休眠 millis 毫秒。

• 放弃: • public static void yield() • 当前线程主动放弃时间片,回到就绪状态,竞争下一次时间片。

• 结合: • public final void join() • 允许其他线程加入到当前线程中。

线程同步(1)
• 同步代码块: synchronized(临界资源对象){ //对临界资源对象加锁 //代码(原子操作) }

注:• 每个对象都有一个互斥锁标记,用来分配给线程的。

• 只有拥有对象互斥锁标记的线程,才能进入对该对象加锁的同步代码块。

• 线程退出同步代码块时,会释放相应的互斥锁标记

同步方法(2): synchronized 返回值类型 方法名称(形参列表){ //对当前对象(this)加锁 // 代码(原子操作) }注:

•只有拥有对象互斥锁标记的线程,才能进入该对象加锁的同步方法中。

•线程退出同步方法时,会释放相应的互斥锁标记

Light Weight Process )。
程序中的一个顺序控制流程,同时也是 CPU 的基本调度单位。
进程由多个线程组成,彼此间完成不同的工替执行,
称为多线程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值