bingfa

在上一篇博文中我说collection很重要单独写,这样并发也必须单独写,否则显得其不重要,但其实很重要。

What are threads!!!

Thread.sleep();暂时组织当前线程的活动多少多少毫秒
就比如你让程序执行了一个很久很久的操作,在这途中你无法终止它或者干其他事,就是得等他弄完才行,这忍不了。

Runnable r=()->{
    try{
    fori...
    }
    catch(...)
    {}
};
Thread i= new Thread(r);
t.start();

这就是thread,thread可以共享东西,进程不行

interrupting threads

interrupt方法被用于一个线程的request终止,当interrupt方法被一个线程调用,线程进入被打断状态,这是一个boolean标志在每个线程里都有的!每个线程应当不时检查自己有没有被打断。
Thread.currentThread().isInterrupted(), 但进程首先会被异常terminate,然后还会被sleep||wait block,这时候也会异常

Thread States

New, Runnable, Blocked, Waiting, Timed waiting, Terminated
new一个线程,.start后开始进入Runnable状态,并不一定在run有操作系统决定何时在run,经常暂停让别人也跑跑很理想,让别人跑的时候将原来在跑的那个放入thread priorites.
所有现代桌面系统和服务器都是用抢先调度方式,小设备可以能使用合作调度,我在想我玩游戏经常切出来是不是导致他掉线的原因

Blocked and Waiting threads

  • 原来我们想要一个别的线程里正在锁住的东西就会堵塞,获取了就不堵了
  • 当我们线程等待另一个线程通知情况的调度,他就进入了等待状态,Object,wait或者Thread.join方法,或者等待一个锁,,在实践中与Blocked状态区别不大
  • 很多方法有一个timeout参数,调用他们会是程序进入等待状态,要么时间结束要么正确接收。
    这里写图片描述

Terminated Threads

  • 自然死亡,run方法正常结束
  • 由于抛出异常而意外死亡

你可以杀死一个进程使用它的stop方法,不许用

Thread:
* void join()
* void join(long millis)
* Thread.State getState
* void stop()
* void suspend()不建议使用
* void resume() 只有suspend会才调用,不许用!

ps:设计模式要忘记其形

Thread Properties

每个线程都有一个优先级,默认来说继承与创建它的那个优先级,你可以增加或者减小器优先级,从一到10,MIN1MAX10NOR5
每当有机会选择一个新的线程,它倾向于更高优先级的线程。然而,线程优先级高系统独立host plantform级别,
在jvm中,线程优先级被忽略了,所用线程具有相同的优先级

Daemon Threads

t.setDaemon(true)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值