Java线程介绍

线程的优越性:
1)程序实现并发。并发可以优化程序的吞吐量。
2)使程序更加的松散耦合,提高代码的重用性。

Java线程的实现:
1)通过继承Java的Thread类实现线程所要的必要架构。

Thead类方法介绍:
构造器:通过构造器可以为线程指定一个名称,该名称可以通过getName方法获取。
start()方法:启动线程,即调用线程的run方法。

yield()方法:线程让步。由于让步的调用机制是抢占式的。因而增加了程序的不稳定性,所以yiled方法使用较少。

sleep()方法:使线程停止执行一段时间。sleep方法不是控制线程顺序的方法,该方法唯一保证是的是线程将至少休眠指点的毫秒数。注:如果要控制线程的执行顺序,最好的方法是不使用线程!

setDaemon(boolean)方法:当参数为true时,该线程为后台线程。此方法调用于start()方法之前才有效。
注:1)后台线程随程序的结束而结束,即使start()方法还未运行完。
2)后台线程只能创建后台线程。

isDaemon()方法:判断该线程是否是后台线程。true为后台线程。

join()方法:等待线程结束。说明:如果某个线程中调用另一个线程t 的join 方法后,该线程将被挂起,知道线程t 运行结束以后才恢复。
join 方法可以接受一个long 参数设置超时时间。

interrupt()方法:终端线程。
副作用:会使join 方法抛出InterruptedException异常。

isInterrupted()方法:判断线程是否中断。
说明:interrupt 方法调用将会给该线程设定一个标志,这是isInterrupted返回为true,但异常被捕获后将清理该标志。


Runnable 接口介绍:
优点:允许基类和其他接口混合使用。
缺点:虽然基类实现了Runnable 接口,但也仅表示它实现了run 方法,并不表示该类具有线程有关的特性。要Runnable 对象产生一个线程,需要通过Thread 类的帮助,代码如:new Thread(new RunnableObj(), "threadName");

注 1)获取Runnable对象的name属性:Thread.currentThread().getName()


Timer类:用于大量的并发任务。


关键字:
volatile:除去编译器对变量的优化(优化会导致多线程时数据的不一致,同时使用volatile 会产生效率上的降低,但保证数据的同步个人认为这是值得的)。
友情提示:虽然基本类型的赋值和返回值是原子操作,但是对于long 型和double 型需要使用volatile 才能实现赋值和返回值是原子操作。
synchronized:解决共享资源的竞争。
友情提示:在使用synchronized 关键字时,必须对每一个用到共享资源的方法都是用synchronized 关键字,否则将会出错。
synchronized 并不是Java 方法的特性签名。
synchronized 可以创建临界区,又称同步控制块。代码如 synchronized(synchronizedObj){ }


提示:
1)线程中抛出异常(run()方法),并不能将程序终止,只能终止线程。
2)Java 中自增操作不是原子操作。
3)同步控制块比对象加锁时间更短,更加的有效。但是对程序员要更加的勤奋:必须将所有访问的共享资源放入同步控制块中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值