读书笔记:java线程_1

1.你可以看到在main( )里创建并运行了一些线程。Thread类的start( )方法将为线程执 行特殊的初始化动作,然后调用run( )方法。所以整个步骤是:首先调用构造器来构造对象,在构造器中调用了start( )方法来配置线程,然后由线程执行机制调用run( )。如 果你不调用start( )(在后面的例子你将看到,你不必在构造器里调用start( )),线程永远不会启动。


2.当在main( )中创建若干个Thread对象的时候,并没有获得它们中任何一个的引用。对于普通的对象,这会使它成为垃圾回收器要回收的目标,但对于Thread对象就不会了。每个Thread对象需要注册自己,所以实际上在某个地方存在着对它的引用,垃圾收集器只有 在线程离开了run( )并且死亡之后才能把它清理掉。


3.另一种能控制线程行为的方法是调用sleep( ),这将使线程停止执行一段时间,该时间由你给定的毫秒数决定。


4.在你调用 sleep( ) 方法的时候,必须把它放在 try 块中,这是因为 sleep( ) 方法在休眠时间到期之前有可能被中断。如果某人持有对此线程的引用,并且在此线程上调用了 interrupt( ) 方法,就会发生这种情况。 

Tip:除非知道如何处理,否则不要捕获异常”。


5.线程的优先权是通过使用setPriority( )方法进行调整的。对于已存在的线程,你可以用getPriority( )方法得到其优先权,也可以在任何时候使 用setPriority( )方法更改其优先权。


6.尽管JDK10 个优先级别,但它与多数操作系统都不能映射得很好。唯一可移植的策略是当你调整优先级的时候,只使用MAX_PRIORITY,NORM_PRIORITY,和MIN_PRIORITY三种级别。


7.你必须在线程启动之前调用 setDaemon( true ) 方法,才能把它设置为后台线程。你可以通过调用 isDaemon( ) 方法来确定线程是否是一个后台线程。如果是一个后台线程, 那么它创建的任何线程将被自动设置成后台线程。
8. Thread.sleep(1000),使main()函数睡眠1s。

9.一个线程可以在其它线程之上调用join( )方法,其效果是等待一段时间直到第二个线程 结束才继续执行。如果某个线程在另一个线程t 上调用t.join( ),此线程将被挂起,直到目标线程t 结束才恢复(即t.isAlive( )返回为假)。你也可以在调用join( )时带上一个超时参数(单位可以是毫秒或者毫秒加纳秒),这样 如果目标线程在这段时间到期时还没有结束的话,join( )方法总能返回。


10.当另一个线程在该线程上调用 interrupt( ) 时,将给该线程设定一个标志,表明该线程已经被中断。然而,异常被捕获时将清除这个标志,所以在异常被捕获的时候这个标志总是为假。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值