知识大全 Java线程和Objec之间的不解之缘

Posted

篇首语:眼前多少难甘事,自古男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java线程和Objec之间的不解之缘相关的知识,希望对你有一定的参考价值。

Java线程和Objec之间的不解之缘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Java线程在不断的发展 发展的过程中我们需要不断的学习相关代码的知识 下面我们就详细的看看如何进行相关技术信息的学习 在创建启动Java线程之前 先创建一个线程之间竞争使用的Object对象 然后将这个Object对象的引用传递给每一个线程对象的lock成员变量

  这样一来 每个线程的lock成员都指向同一个Object对象 我们在run方法中 对lock对象使用synchronzied块进行局部封锁 这样就可以让Java线程去竞争这个唯一的共享的对象锁 从而实现同步

  代码

   package vista;

   class MyThread implements java lang Runnable

  

   private int threadId;

   private Object lock;

   public MyThread(int id Object obj)

  

   this threadId = id;

   this lock = obj;

  

   @Override

   public void run()

  

   synchronized(lock)

  

   for (int i = ; i < ; ++i)

  

   System out println( Thread ID: + this threadId + : + i);

  

  

  

  

   public class ThreadDemo

  

   /**

   * @param args

   * @throws InterruptedException

   */

   public static void main(String[] args) throws InterruptedException

  

   Object obj = new Object();

   for (int i = ; i < ; ++i)

  

   new Thread(new MyThread(i obj)) start();

   Thread sleep( );

  

  

  

  从第二段代码可知 同步的关键是多个Java线程对象竞争同一个共享资源即可 上面的代码中是通过外部创建共享资源 然后传递到Java线程中来实现 我们也可以利用类成员变量被所有类的实例所共享这一特性 因此可以将lock用静态成员对象来实现 代码如下所示

  代码

   package vista;

   class MyThread implements java lang Runnable

  

   private int threadId;

   private static Object lock = new Object();

   public MyThread(int id)

  

   this threadId = id;

  

   @Override

   public void run()

  

   synchronized(lock)

  

   for (int i = ; i < ; ++i)

  

   System out println( Thread ID: + this threadId + : + i);

  

  

  

  

   public class ThreadDemo

  

   /**

   * @param args

   * @throws InterruptedException

   */

   public static void main(String[] args) throws InterruptedException

  

   for (int i = ; i < ; ++i)

  

   new Thread(new MyThread(i)) start();

   Thread sleep( );

  

  

  

cha138/Article/program/Java/gj/201311/27336

相关参考

知识大全 验证后台线程的java多线程技术

  这个程序验证了后台线程与用户线程的区别以及之间的关系证明了只要所有的用户线程结束了那么后台线程就将必须结束!  importncurrentTimeUnit;  publicclass 

知识大全 Java的用户线程和守护线程

Java的用户线程和守护线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java多线程编程基础之线程和多线程

Java多线程编程基础之线程和多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着计算机技

知识大全 Java线程安全和非线程安全

Java线程安全和非线程安全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ArrayList和

知识大全 Java 线程/内存模型的缺陷和增强

Java线程/内存模型的缺陷和增强  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java在语言

知识大全 java多线程notify和wait

java多线程之wait()notify()notifyAll()    wait()notify()notifyAll()不属于Thread类而是属于Object基础类也就是说每个对像都有wait(

知识大全 高级应用 java多线程设计模式详解之一

  线程的创建和启动    java语言已经内置了多线程支持所有实现Runnable接口的类都可被启动一个新线程新线程会执行该实例的run()方法当run()方法执行完毕后线程就结束了一旦一个线程执行

知识大全 Java使用回调和线程处理耗时响应过程[2]

Java使用回调和线程处理耗时响应过程[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 Java使用回调和线程处理耗时响应过程[1]

Java使用回调和线程处理耗时响应过程[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 Java多线程中run和start的区别

Java多线程中run和start的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  区别调用