JavaThread队列详细代码的介绍

Java Thread队列一直是我们需要掌握的代码。下面我们就基本思想:建立了一个队列,为每一个Java Thread队列保存了一个对象锁,保证按顺序执行。线程启动的时候,使随机的,但是执行代码是按顺序的。

创新互联建站专注于企业成都全网营销、网站重做改版、固安网站定制设计、自适应品牌网站建设、HTML5建站商城系统网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为固安等各大城市提供网站开发制作服务。

 
 
 
  1. import java.util.LinkedList;
  2. import java.util.Queue;
  3. public class ThreadTest {
  4. private static Queue qThread=new LinkedList();//线程同步对象队列
  5. public static synchronized void putObject(Object t){
  6. qThread.offer(t);
  7. }
  8. public static synchronized Object getObject(){
  9. return qThread.poll();
  10. }
  11. public static void waitThread(Object t) throws InterruptedException{
  12. synchronized(t){
  13. t.wait();
  14. }
  15. }
  16. public static void notifyThread(){
  17. Object obj=ThreadTest.getObject();
  18. synchronized(obj){
  19. obj.notify();
  20. }
  21. }
  22. public static void main(String[] args) throws InterruptedException {
  23. int i = 0;
  24. boolean isFirst=true;
  25. while (i < 10) {
  26. Object obj=new Object();
  27. if(i>0){
  28. isFirst=false;
  29. ThreadTest.putObject(obj);
  30. }
  31. Thread t2 = new Thread2(isFirst,obj);
  32. Object obj2=new Object();
  33. ThreadTest.putObject(obj2);
  34. Thread t3 = new Thread3(obj2);
  35. t2.start();
  36. t3.start();
  37. i++;
  38. }
  39. }
  40. }
  41. /**
  42. * 线程2
  43. *
  44. * @author Harry.WANG
  45. *
  46. */
  47. class Thread2 extends Thread {
  48. private boolean isFirst=false;
  49. private Object obj;
  50. public Thread2(boolean f,Object obj){
  51. this.isFirst=f;
  52. this.obj=obj;
  53. }
  54. @Override
  55. public void run() {
  56. if(!this.isFirst){
  57. System.out.println(this.getName()+"等待...");
  58. try{
  59. ThreadTest.waitThread(obj);
  60. }catch(InterruptedException e){
  61. e.printStackTrace();
  62. }
  63. }
  64. System.out.println("启动"+this.getName()+"...");
  65. try {
  66. sleep(3000);//等待3秒,为了测试
  67. } catch (InterruptedException e) {
  68. e.printStackTrace();
  69. }
  70. System.out.println("停止"+this.getName()+"...");
  71. ThreadTest.notifyThread();
  72. }
  73. }
  74. class Thread3 extends Thread {
  75. private Object obj;
  76. public Thread3(Object obj){
  77. this.obj=obj;
  78. }
  79. @Override
  80. public void run() {
  81. System.out.println(this.getName()+"等待...");
  82. try{
  83. ThreadTest.waitThread(obj);
  84. }catch(InterruptedException e){
  85. e.printStackTrace();
  86. }
  87. System.out.println("启动"+this.getName()+"...");
  88. try {
  89. sleep(3000);//等待3秒,为了测试
  90. } catch (InterruptedException e) {
  91. e.printStackTrace();
  92. }
  93. System.out.println("停止"+this.getName()+"...");
  94. ThreadTest.notifyThread();
  95. }
  96. }

以上就是对Java Thread队列的详细介绍。希望大家有所帮助。

网站题目:JavaThread队列详细代码的介绍
链接地址:http://www.shufengxianlan.com/qtweb/news1/506301.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联