Java多线程

进程 and 线程

        进程是程序的一次动态执行过程。经历了从代码加载、执行到执行完毕的一个完整过程;(由于CPU的执行速度很快,使得所有的进程像是“同时”执行一样)

多线程是实现并发机制的一种有效手段。线程是比进程更小的执行单位,多线程是指一个进程在执行过程中可以产生多个更小的程序单元(即线程),这些线程可以同时存在、同时运行,而一个进程包含了多个同时执行的线程.

         

Java中线程的实现

   所谓的线程(Thread)是指程序的运行流程,多线程的机制则是指可以同时运行多个程序块,使程序的运行效率更高.

   Java中,实现多线程代码有两种方式:一是继承Thread类;二是实现Runnable接口(JDK1.5之后提供有一个新的Callable接口)

继承Thread类:

  一个类只要继承了Thread类,此类就称为多线程操作类。在Thread子类中,必须明确的覆写Thread类中的run()方法。此方法为线程的主体.

演示:

class MyThread extends Thread{
    private String name;
    public MyThread(String name){
        this.name=name;
    }
    public void run(){
        for(int i=0;i<=10;i++)
            System.out.println(name+"运行"+"\t"+"i="+i);
    }
}

public class ThreadDemo {
    public static void main(String[] args) {
        MyThread m1=new MyThread("线程A");
        MyThread m2=new MyThread("线程B");
        m1.run();
        m2.run();
    }
}

此时会发现控制台打印的结果并没有交替打印,要想启动线程,是不能直接调用run()方法的.

  而是应该调用从Thread类中继承而来的start()方法. 改:

m1.run() --- m1.start()

m2.run()---m2.start()

此时就会交替打印,但每次结果可能不同——哪个线程对象抢到了CPU资源,哪个线程就先运行

实现Runnable接口:

Thread类和Runnable接口的区别

线程的状态

   要想实现多线程,必须在主线程中创建新的线程对象。线程一般有5中状态:创建、就绪、运行、阻塞、终止. 

           

1. 创建状态:

      在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态。此时,它已经有了相应的内存空间和其他资源,但还处于不可运行状态。新建一个线程对象可采用Thread类的构造方法实现,例如:Thread thread = new Thread();

同步与死锁

  所谓的同步,是指多个操作在同一时间段内只能有一个线程进行,其他线程要等此线程完成之后才可以进行。

使用同步解决问题:

 解决资源共享的同步操作,可以使用同步代码块和同步方法两种方式完成.

1、同步代码块: 代码块是指使用{}括起来的一段代码,根据其位置和声明的不同,可以分为普通代码块、构造块、静态块3种,如果在代码加上synchronized关键字,则此代码称同步代码块

    

死锁: 

一般程序的死锁是在程序运行时出现的.

读者需要记住:多个线程共享同一资源时,需要同步;但是,过多的同步可能造成死锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灯雾️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值