吴裕雄--天生自然 JAVA开发学习:多线程编程

Posted tszr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴裕雄--天生自然 JAVA开发学习:多线程编程相关的知识,希望对你有一定的参考价值。

class RunnableDemo implements Runnable 
   private Thread t;
   private String threadName;
   
   RunnableDemo( String name) 
      threadName = name;
      System.out.println("Creating " +  threadName );
   
   
   public void run() 
      System.out.println("Running " +  threadName );
      try 
         for(int i = 4; i > 0; i--) 
            System.out.println("Thread: " + threadName + ", " + i);
            // 让线程睡眠一会
            Thread.sleep(50);
         
      catch (InterruptedException e) 
         System.out.println("Thread " +  threadName + " interrupted.");
      
      System.out.println("Thread " +  threadName + " exiting.");
   
   
   public void start () 
      System.out.println("Starting " +  threadName );
      if (t == null) 
         t = new Thread (this, threadName);
         t.start ();
      
   

 
public class TestThread 
 
   public static void main(String args[]) 
      RunnableDemo R1 = new RunnableDemo( "Thread-1");
      R1.start();
      
      RunnableDemo R2 = new RunnableDemo( "Thread-2");
      R2.start();
      
class ThreadDemo extends Thread 
   private Thread t;
   private String threadName;
   
   ThreadDemo( String name) 
      threadName = name;
      System.out.println("Creating " +  threadName );
   
   
   public void run() 
      System.out.println("Running " +  threadName );
      try 
         for(int i = 4; i > 0; i--) 
            System.out.println("Thread: " + threadName + ", " + i);
            // 让线程睡眠一会
            Thread.sleep(50);
         
      catch (InterruptedException e) 
         System.out.println("Thread " +  threadName + " interrupted.");
      
      System.out.println("Thread " +  threadName + " exiting.");
   
   
   public void start () 
      System.out.println("Starting " +  threadName );
      if (t == null) 
         t = new Thread (this, threadName);
         t.start ();
      
   

 
public class TestThread 
 
   public static void main(String args[]) 
      ThreadDemo T1 = new ThreadDemo( "Thread-1");
      T1.start();
      
      ThreadDemo T2 = new ThreadDemo( "Thread-2");
      T2.start();
      
public class DisplayMessage implements Runnable 
   private String message;
   
   public DisplayMessage(String message) 
      this.message = message;
   
   
   public void run() 
      while(true) 
         System.out.println(message);
      
   
public class GuessANumber extends Thread 
   private int number;
   public GuessANumber(int number) 
      this.number = number;
   
   
   public void run() 
      int counter = 0;
      int guess = 0;
      do 
         guess = (int) (Math.random() * 100 + 1);
         System.out.println(this.getName() + " guesses " + guess);
         counter++;
       while(guess != number);
      System.out.println("** Correct!" + this.getName() + "in" + counter + "guesses.**");
   
public class ThreadClassDemo 
 
   public static void main(String [] args) 
      Runnable hello = new DisplayMessage("Hello");
      Thread thread1 = new Thread(hello);
      thread1.setDaemon(true);
      thread1.setName("hello");
      System.out.println("Starting hello thread...");
      thread1.start();
      
      Runnable bye = new DisplayMessage("Goodbye");
      Thread thread2 = new Thread(bye);
      thread2.setPriority(Thread.MIN_PRIORITY);
      thread2.setDaemon(true);
      System.out.println("Starting goodbye thread...");
      thread2.start();
 
      System.out.println("Starting thread3...");
      Thread thread3 = new GuessANumber(27);
      thread3.start();
      try 
         thread3.join();
      catch(InterruptedException e) 
         System.out.println("Thread interrupted.");
      
      System.out.println("Starting thread4...");
      Thread thread4 = new GuessANumber(75);
      
      thread4.start();
      System.out.println("main() is ending...");
   
public class CallableThreadTest implements Callable<Integer> 
    public static void main(String[] args)  
      
        CallableThreadTest ctt = new CallableThreadTest();  
        FutureTask<Integer> ft = new FutureTask<>(ctt);  
        for(int i = 0;i < 100;i++)  
          
            System.out.println(Thread.currentThread().getName()+" 的循环变量i的值"+i);  
            if(i==20)  
              
                new Thread(ft,"有返回值的线程").start();  
              
          
        try  
          
            System.out.println("子线程的返回值:"+ft.get());  
         catch (InterruptedException e)  
          
            e.printStackTrace();  
         catch (ExecutionException e)  
          
            e.printStackTrace();  
          
  
    
    @Override  
    public Integer call() throws Exception  
      
        int i = 0;  
        for(;i<100;i++)  
          
            System.out.println(Thread.currentThread().getName()+" "+i);  
          
        return i;  
      

 

以上是关于吴裕雄--天生自然 JAVA开发学习:多线程编程的主要内容,如果未能解决你的问题,请参考以下文章

吴裕雄--天生自然 JAVA开发学习:继承

吴裕雄--天生自然 JAVA开发学习:异常处理

吴裕雄--天生自然 JAVA开发学习:变量类型

吴裕雄--天生自然 JAVA开发学习:日期时间

吴裕雄--天生自然 JAVA开发学习:发送邮件

吴裕雄--天生自然 JAVA开发学习:多态