JAVA线程小结

1线程的基本概念

线程是程序内部执行的顺序控制流(程序内不同的执行路径)

线程与进程的区别:

每个进程都有独立的代码块(进程上下文),进程间的切换会有较大的开销

线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运 行栈和程序计数器,线程切换开销小。

多线程:在同一应用程序中有多个顺序流同时执行

多进程:在操作系统中能用时运行多个任务(程序)

2线程的创建和启动

JAVA的线程是通过java.lang.Thread类来实现的

JVM启动时会有一个由主方法所定义的线程

可以通过Therad的实例来创建新的线程(继承)

每个线程都是通过某个特定的Thread对象所对应的run()方法来完成其操作的,方法 run()称为线程体(不能抛出异常,只能trycatch

通过调用Thread类的start()方法来启动一个线程

还可以通过实现Runable接口来创建新的线程(实现接口)(不能抛出异常,只能try catch

使用Runable接口可以为多个线程提供共享的数据

实现Runable接口的类的run()方法定义中可以使用Thread的静态方法

例:public static Thread currentThread()//获取当前线程的引用

3线程的调度和优先级

IsAlive()//判断线程是否还“活”着

getPriority()//获得当前线程的优先级

setPriority()//设置当前线程的优先级

Thread.sleep()//设置当前线程睡眠毫秒数(互斥锁还存在)

Wait()//当前线程进入对象的wait pool(互斥锁丢失)

Notify()//唤醒对象的wait pool

NotifyAll()//唤醒所有对象的wait pool

Join()//“合并”某个线程

Interrupt()//停止某个线程

Yield()//让出CPU,给其他线程执行的时间

Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有的线程。线程调度器 按照线程的优先级来决定那个线程先执行(默认5),优先级范围从110

 

4线程同步

Synchronized(关键字)对象互斥锁,执行该方法时,锁定当前对象,以保证同步(只 有一个线程能使用),执行完成后才释放锁。

例:synchronized(‘锁对象’){

}任何对象都能做锁对象,JAVA同步机制利用该对象的intrinsic lock来判断是否锁住了代码块。

 

 

例:public  synchronized  void  f( ){

//逻辑代码
}

将自动的获取调用该方法的对象上的intrinsic  lock,在方法返回时释放。

 

实现同步时需要使用唯一、共享的锁对象,否则无法实现。

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值