Java 系列—— 多线程_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java 系列—— 多线程

Java 系列—— 多线程

 2013/12/12 1:09:05  chencvgk  程序员俱乐部  我要评论(0)
  • 摘要:实现线程的方式多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。这是继承Thread类实现线程的示例:publicclassThreadTestextendsThread{publicvoidrun(){//在这里编写线程执行的主体//dosomething}}这是实现Runnable接口实现多线程的示例:publicclassRunnableTestimplementsRunnable{publicvoidrun()
  • 标签:多线程 Java 线程

实现线程的方式

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
这是继承Thread类实现线程的示例:
class="java">public class ThreadTest extends Thread {
public void run() {
// 在这里编写线程执行的主体
// do something
}
}

这是实现Runnable接口实现多线程的示例:
public class RunnableTest implements Runnable {
public void run() {
// 在这里编写线程执行的主体
// do something
}
}

这两种实现方式的区别并不大。继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。 ? ? 线程的状态 在Java 1.4及以下的版本中,每个线程都具有新建、可运行、阻塞、死亡四种状态,但是在Java 5.0及以上版本中,线程的状态被扩充为新建、可运行、阻塞、等待、定时等待、死亡六种。
?

sleep()和wait()的区别

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

1、这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

?

实现同步的方式

?

synchronized和Lock

关于死锁

线程池

上一篇: WPF实现简单计算器-非常适合初学者练习 下一篇: 没有下一篇了!
发表评论
用户名: 匿名