java细节(五)

1 线程与进程的本质区别:每个进程拥有自己的一整套变量,而线程共享数据。这使得线程间通信更有效,容易。

 

2 java.lang.Thread 1.0

static void sleep(long millis) 休眠给定的毫秒数

 

3 Runnable接口中只有一个方法:run()

4 实现线程有两种方式;实现Runnable接口或是继承Thread(此方式目前已不推荐)。

 

5 线程简单示例:

  class MyRunnable implements Runnable{

public void run(){

task code

}

}

MyRunnable r = new MyRunnable();

Thread t = new Thread(r);

t.start();

 

6 不要调用Thread类或Runnable对象的run方法。直接调用run方法,只会执行同一个线程中的任务,而不会启动新的线程。

 

7 java.lang.Thread 1.0

Thread(Runnable target)  构造一个新线程,用于调用给定target的run方法。

void start()  启动这个线程,将引发调用run方法。

void run()  调用关联Runnable的run方法。

 

8 java.lang.Runnable 1.0

void run() 必须覆盖这个方法,并在其中提供要执行的任务。

 

9 可以用interrupt方法来请求终止线程。stop和suspend方法都遭到了弃用。

 

10 java.lang.Thread 1.0

void interrupt() 向线程发送一个请求。

static boolean interrupted()测试线程是否被中断,产生副作用--将线程中断状态置为false

boolean isInterrupted()测试线程是否中断,不产生副作用。

static Thread currentThread()返回代表当前执行线程的Thread对象。

 

11 线程的六种状态:New(新生)Runnable(可运行)Blocked(阻塞)Waiting(等待)Timed waitin(计时等待)Terminated(被终止)

 

12 java.lang.Thread 1.0

void join()等待终止指定的线程。

void join(long millis)等待指定的线程死亡或者经过指定的毫秒数

Thread.State getState()  5.0获得线程状态。

 

13 线程有10个优先级,范围由1到10 ,优先级由小到大。 可以由 void setPriority(int newPriority)来设定

14 守护进程的唯一用途是为其他线程提供服务,如计时线程。当只剩下守护进程时,虚拟机就退出了。守护进程应该永远不去访问固有资源。

void setDaemon(boolean  isDaemon) 用来标识该线程为守护线程或用户线程。

 

15 用ReentrantLock保护代码块的基本机构如下:

 myLock.lock(); //可重入锁表示线程可以重复地获得已经持有的锁。

try{

   critical section

}

finally{

   myLock.unlock(); 

}

 

16 java.util.concurrent.locks.Lock 

void lock()获得这个锁,若是锁同时被另一个线程拥有,则发生拥塞。

void unlock()释放这个锁。

 

java.util.concurrent.locks.ReentrantLock 

ReentrantLock()构建一个可以被用来保护临界区的可重入锁。

ReentrantLock(boolean fair)构建一个带公平策略的锁。

 

17 java.util.concurrent.locks.Lock

Condition newCondition()返回一个与该锁相关的条件对象。

 

java.util.concurrent.locks.Condition 5.0

void await() 将该线程放到条件的等待集中去。

void signalAll() 解除该条件的等待集中的所有线程的阻塞状态。

void signal()从该条件的等待集中随机选取一个线程,解除其阻塞状态。

 

18 java中的每一个对象都有一个内部锁。如果一个方法用synchornized关键字声明,那么对象的锁将保护整个方法。

即要调用该方法,线程必须获得内部的对象锁。

此时,方法wait等同于上述的await方法,notify/notifyAll方法等同于signal/signalAll方法。

 

19 锁来管理那些试图进入synchornized方法的进程,由条件来管理那些调用wait的进程。

 

20 将静态方法声明为synchornized也是合法的。若调用这种方法,该方法获得相关类对象的内部锁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值