多线程(J2SE学习随笔三)

多线程

1、线程是进程中的一条执行路径。进程是系统中正在运行的程序。(进出是一个静态概念,线程是一个动态概念。)

2、开启一个新的线程的方法:

a、继承Thread类,并且重写Thread中的run方法。

b、实现Runnable接口。

注意:开启新线程是通过调用start方法,而直接调用run方法只是一般得方法调用。

3、线程状态的转换:

线程状态转换图

4、线程控制基本方法

isAlive()判断线程是否还“活着”,即线程是否还未终止。

getPriority()获得线程的优先级数值。

setPriority()设置线程的优先级数值。

Thread.sleep()见当前线程睡眠指定毫秒数。

join()调用某线程的该方法,将当前线程与该线程“合并”,即等待该线程 结束,再回复当前线程的运行。

yield()让出CPU,当前线程进入就绪队列等待调度。(只让一次)

wait()但其线程进入对象的waitpool。

notify()/notifyAll()唤醒对象的waitpool中的一个/所有等待线程。

注意:线程的优先级取值范围1到10,默认为5。

5、线程同步是为了防止多个线程访问同一个数据对象时,对数据造成破坏。

实现线程同步的方法:

a、代码块锁定:

synchronized(this){......}

b、方法锁定:

publicsynchronisedvoidXXX(...){......}

6、线程死锁:是一种少见的、而且难于调试的错误,在两个线程对象对两个同步对象具有循环依赖时,就会出现死锁现象。

你可能感兴趣的:(J2SE)