电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

java多线程设计模式WorkerPattern

java多线程设计模式WorkerPattern_第1页
1/24
java多线程设计模式WorkerPattern_第2页
2/24
java多线程设计模式WorkerPattern_第3页
3/24
多线程 经典实例 java 语言已经内置了多线程支持,所有实现Runnable 接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了。一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程。 Thread 类是实现了Runnable 接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过 Thread 类的start()实例方法: Thread t = new Thread(); t.start(); start()方法是一个native 方法,它将启动一个新线程,并执行run()方法。Thread 类默认的run()方法什么也不做就退出了。注意:直接调用 run()方法并不会启动一个新线程,它和调用一个普通的java 方法没有什么区别。 因此,有两个方法可以实现自己的线程: 方法1:自己的类extend Thread,并复写 run()方法,就可以启动新线程并执行自己定义的run()方法。例如: public class MyThread extends Thread { public run() { System.out.println("MyThread.run()"); } } 在合适的地方启动线程:new MyThread().start(); 方法2:如果自己的类已经extends 另一个类,就无法直接extends Thread,此时,必须实现一个Runnable 接口: public class MyThread extends OtherClass implements Runnable { public run() { System.out.println("MyThread.run()"); } } 为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread 实例: MyThread myt = new MyThread(); Thread t = new Thread(myt); t.start(); 事实上,当传入一个Runnable target 参数给Thread 后,Thread 的run()方法就会调用target.run(),参考JDK 源代码: public void run() { if (target != null) { target.run(); } } 线程还有一些Name, ThreadGroup, isDaemon 等设置,由于和线程设计模式关联很少,这里就不多说了。 由于同一进程内的多个线程共享内存空间,在 Java 中,就是共享实例,当多个线程试图同时修改某个实例的内容时,就会造成冲突,因此,线程必须实现共享互斥,使多线程同步。 最简单的同步是将一个方法标记为 synchronized,对同一个实例来说,任一时刻只能有一个synchronized 方法在执行。当一个方法正在执行某个synchronized 方法时,其他线程如果想要执行这个实例的任意一个synchronized 方法,都必须等待当前执...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

java多线程设计模式WorkerPattern

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部