Java多线程

Java多线程

一、进程与线程

  1. 线程都是在进程基础上并发执行。
  2. 如果现在运行多个任务,则说有的资源被所有线程共用。

二、Java的多线程实现

  1. 继承thread类
        (1)thread类在java.lang包中,一个类继承了这个类,就叫做多线程操作类,并且必须明确的覆写run()方法。
        (2)调用start()方法才是真正的启动线程。
        (3)java允许java程序访问操作系统的函数,在Thread的start()方法
    中,有一个native关键字,表示的是一个由java调用本机操作系统函数的关键字。同时证明了,要想实现多线程,必须要获得操作系统的支持。
        (4)sleep()方法,使线程休眠,时间为微秒
        (5)join()方法使其他线程等待当前线程终止,等待时间为毫秒
        (6)static void yield()方法,当前运行的线程释放处理器资源
        (7)返回当前运行的线程引用。
  2. 实现runnable接口
        (1)实现runnable接口的类在创建线程时,通过Thread类的有参构造函数,创建线程,传入两个参数,第一个传入实现runnable接口的对象,第二个参数传入线程的名字。
  3. 深入比较Thread和Runnable接口
    (1)从定义格式上,Thread实现了Runnable接口,当使用其他类mythread事项runnable接口时,相当于采用代理模式,Thread实现核心操作,mythread作为代理。
    (2)Thread实现的线程不能共享资源,Runnable接口实现的线程可以共享资源。例如卖票因为Thread的子类中都有单独的票数变量,所以各卖各的。而Runnable不一样
    (3)使用结论:使用Runnable接口比Thread类有以下优点:
         适合多个线程共同处理一个资源,可以避免单继承带来的影响,增加了程序的健壮性。

三、同步与死锁

  1. 同步:所谓同步就是多个操作在同一个时间段内只有一个线程进行,其他线程等待此线程完成之后才可以进行,想要实现有两种方法,使用同步代码块和同步方法。
    (1)同步代码块:使用synchronized关键字声明的代码块。同步的时候必须指定同步对象,一般使用当前对象,用this表示。
    (2)同步方法:使用synchronized关键字声明的方法叫做,同步方法
  2. 死锁:资源共享时需要用到同步,过多的同步会造成死锁,死锁是程序在运行时产生的一种状态。
  3. Java方法完整形式:
    访问权限 final static synchronized 返回值类型 (参数类型 参数名称)throws Exception1,Exception2,…{ return 返回值 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值