您的位置:首页 > 编程语言 > Java开发

Java回炉之多线程(一)

2015-12-09 23:34 260 查看

Java回炉之多线程(一)

Java回炉之多线程一
创建方法

设置获取线程名

获取当前线程

优先级

线程控制

生命周期

状态转换

同步代码块

同步方法

Lock锁

等待唤醒机制

线程组

线程池

定时器

创建方法

继承Thread

实现Runable

设置获取线程名

setName()

getName()

默认线程名:Thread-x(x为编号)

获取当前线程

Thread.getCurrentThread()

优先级

默认是5,最小1,最大10

getPriority():获取优先级

setPriority(int):设置优先级

线程控制

Thread.sleep(long):让线程睡眠指毫秒值

join():调用者执行完毕后再执行其他线程

Thread.yield():让线程执行更和谐,但不能保证均分

setDaemon():标记调用者为守护线程(代码执行者的守护线程;start()之前调用;被守护线程结束后,守护线程结束)

stop():让线程停止(不安全)

interrupt():让线程中断,并抛出异常

生命周期

新建:创建对象

就绪:有执行资格,但没执行权

运行:有执行资格,有执行权

阻塞:没有执行资格,没有执行权

死亡:对象等待回收



状态转换



同步代码块

参数在同步代码块内线程安全

用同一把锁(锁对象为同一个对象)

线程很多时,判断锁降低运行效率

锁对象可以使任意对象

[code]synchronized(obj){
}


同步方法

同步方法的锁对象是this

静态同步方法的对象是class

[code]private synchronized void method(){
}


Lock锁

实现类:ReentrantLock

- lock():获取锁(上锁)

- unlock():释放锁

一般
lock()
try
之前调用,
unlock()
finally
中调用。

- 示例

[code]private void methodWithSync(){
    synchronized(this){
        //code...
    }
}
private void methodWidthLock(){
    Lock lock=new ReentrantLock();
    lock.lock();
    try{
        //code...
    }finally{
        lock.unlock();
    }
}


等待唤醒机制

生产者与消费者

- wait():等待

再次被唤醒时从此处之后开始运行。

- notify():唤醒单个线程

- notifyAll():唤醒所有线程

上述方法由“锁”来调用

线程组

getThreadGroup():获取调用者(线程)所在线程组

默认情况下,所有的线程都属于同一个组

new Thread(ThreadGroup,Runnable,NameString):在自定义组中创建线程

线程池

[code]//创建线程池
ExecutorService pool = Executor.newFixedThreadPool(2);
//请求线程执行
pool.submit(new Runnable(){});
pool.submit(new Runnable(){});
pool.submit(new Callable(){});
//结束线程池
pool.shutDown();


定时器

Timer

Timer():创建定时器

schedule(TimerTask task,long delay):延迟后执行

schedule(TimerTask task,long delay,long period):延迟后之情,每隔一段时间执行一次

cancle():终止任务

TimerTask

run():任务执行体
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: