bingfa

来源:互联网 发布:淘宝服务市场无线端 编辑:程序博客网 时间:2024/05/16 13:21

在上一篇博文中我说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)

原创粉丝点击