知识大全 java间的线程通信

Posted 变量

篇首语:一盏一直亮着的灯,你不会去注意,但是如果它一亮一灭,你就会注意到。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java间的线程通信相关的知识,希望对你有一定的参考价值。

  不同线程间进行通信通常有两种简单方法

  方法一 通过访问共享变量的方式(注 需要处理同步问题)

  方法二 通过管道流

  其中方法一有两种实现方法 即

  方法一a)通过内部类实现线程的共享变量

  代码如下

  Java代码

  /**

  * 通过内部类实现线程的共享变量

  *

  */

  public class Innersharethread

  public static void main(String[] args)

  Mythread mythread = new Mythread()

  mythread getThread() start()

  mythread getThread() start()

  mythread getThread() start()

  mythread getThread() start()

  

  

  class Mythread

  int index = ;

  private class InnerThread extends Thread

  public synchronized void run()

  while (true)

  System out println(Thread currentThread() getName()

  + is running and index is + index++)

  

  

  

  public Thread getThread()

  return new InnerThread()

  

  

  /**

  * 通过内部类实现线程的共享变量

  *

  */

  public class Innersharethread

  public static void main(String[] args)

  Mythread mythread = new Mythread()

  mythread getThread() start()

  mythread getThread() start()

  mythread getThread() start()

  mythread getThread() start()

  

  

  class Mythread

  int index = ;

  private class InnerThread extends Thread

  public synchronized void run()

  while (true)

  System out println(Thread currentThread() getName()

  + is running and index is + index++)

  

  

  

  public Thread getThread()

  return new InnerThread()

  

  

  方法二b)通过实现Runnable接口实现线程的共享变量

  代码如下

  Java代码

  /**

  * 通过实现Runnable接口实现线程的共享变量

  * @author Administrator

  *

  */

  public class Interfacaesharethread

  public static void main(String[] args)

  Mythread mythread = new Mythread()

  new Thread(mythread) start()

  new Thread(mythread) start()

  new Thread(mythread) start()

  new Thread(mythread) start()

  

  

  /* 实现Runnable接口 */

  class Mythread implements Runnable

  int index = ;

  public synchronized void run()

  while (true)

  System out println(Thread currentThread() getName()

  + is running and the index is + index++)

  

  

  /**

  * 通过实现Runnable接口实现线程的共享变量

  * @author Administrator

  *

  */

  public class Interfacaesharethread

  public static void main(String[] args)

  Mythread mythread = new Mythread()

  new Thread(mythread) start()

  new Thread(mythread) start()

  new Thread(mythread) start()

  new Thread(mythread) start()

  

  

  /* 实现Runnable接口 */

  class Mythread implements Runnable

  int index = ;

  public synchronized void run()

  while (true)

  System out println(Thread currentThread() getName()

  + is running and the index is + index++)

  

  

  方法二

  代码如下

  Java代码

  import java io IOException;

  import java io PipedInputStream;

  import java io PipedOutputStream;

  public class CommunicateWhitPiping

  public static void main(String[] args)

  /**

  * 创建管道输出流

  */

  PipedOutputStream pos = new PipedOutputStream()

  /**

  * 创建管道输入流

  */

  PipedInputStream pis = new PipedInputStream()

  try

  /**

  * 将管道输入流与输出流连接

  * 此过程也可通过重载的构造函数来实现

  */

  nnect(pis)

   catch (IOException e)

  e printStackTrace()

  

  /**

  * 创建生产者线程

  */

  Producer p = new Producer(pos)

  /**

  * 创建消费者线程

  */

  Consumer c = new Consumer(pis)

  /**

  * 启动线程

  */

  p start()

  c start()

  

  

  /**

  * 生产者线程(与一个管道输入流相关联)

  *

  */

  class Producer extends Thread

  private PipedOutputStream pos;

  public Producer(PipedOutputStream pos)

  this pos = pos;

  

  public void run()

  int i = ;

  try

  pos write(i)

   catch (IOException e)

  e printStackTrace()

  

  

  

  /**

  * 消费者线程(与一个管道输入流相关联)

  *

  */

  class Consumer extends Thread

  private PipedInputStream pis;

  public Consumer(PipedInputStream pis)

  

  this pis = pis;

  

  public void run()

  try

  System out println(pis read())

   catch (IOException e)

  e printStackTrace()

  

  

cha138/Article/program/Java/gj/201311/27464

相关参考

知识大全 Java线程通信的机制

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

知识大全 Java多线程共享数据、同步、通信

Java多线程共享数据、同步、通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一线程共享数据

知识大全 Java线程通信源代码中的奥秘探究

Java线程通信源代码中的奥秘探究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java线程通

知识大全 Java 中利用管道实现线程间的通讯

Java中利用管道实现线程间的通讯  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Java语言

知识大全 Java Socket通信技术收发线程互斥的解决方法

JavaSocket通信技术收发线程互斥的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Java中对线程间的变量访问也需要同步控制

Java中对线程间的变量访问也需要同步控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一个简

知识大全 线程的互斥与同步通信问题

   packagecnhingeyangjun;      publicclassTraditionalTh

知识大全 java线程简介(线程的生命)

  创建线程      在Java程序中创建线程有几种方法每个Java程序至少包含一个线程主线程其它线程都是通过Thread构造器或实例化继承类Thread的类来创建的    Java线程可以通过直接

知识大全 Java多线程如何创建多个线程

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

知识大全 JAVA 线程编程----两个线程的程序

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