mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Java
		
	
	
	
| // Many threads join a single thread.
 | |
| 
 | |
| class Sleeper implements Runnable
 | |
| {
 | |
|   int num = -1;
 | |
|   
 | |
|   public Sleeper(int num)
 | |
|   {
 | |
|     this.num = num;
 | |
|   }
 | |
|   
 | |
|   public void run()
 | |
|   {
 | |
|     System.out.println("sleeping");
 | |
|     try
 | |
|     {
 | |
|       Thread.sleep(500);
 | |
|     }
 | |
|     catch (InterruptedException x)
 | |
|     {
 | |
|       System.out.println("sleep() interrupted");
 | |
|     }
 | |
|     System.out.println("done");
 | |
|   }
 | |
| }
 | |
| 
 | |
| class Joiner implements Runnable
 | |
| {
 | |
|   Thread join_target;
 | |
|   
 | |
|   public Joiner(Thread t)
 | |
|   {
 | |
|     this.join_target = t;
 | |
|   }
 | |
|   
 | |
|   public void run()
 | |
|   {
 | |
|     try
 | |
|     {
 | |
|       long start = System.currentTimeMillis();
 | |
|       join_target.join(2000);
 | |
|       if ((System.currentTimeMillis() - start) > 1900)
 | |
|         System.out.println("Error: Join timed out");
 | |
|       else
 | |
|         System.out.println("ok");
 | |
|     }
 | |
|     catch (InterruptedException x)
 | |
|     {
 | |
|       System.out.println("join() interrupted");
 | |
|     }
 | |
|   }
 | |
|   
 | |
| }
 | |
| 
 | |
| public class Thread_Join
 | |
| {
 | |
|   public static void main(String[] args)
 | |
|   {
 | |
|     Thread primary = new Thread(new Sleeper(1));
 | |
|     primary.start();
 | |
|     for (int i=0; i < 10; i++)
 | |
|     {
 | |
|       Thread t = new Thread(new Joiner(primary));
 | |
|       t.start();
 | |
|     }
 | |
|   }
 | |
| }
 |