码迷,mamicode.com
首页 > 编程语言 > 详细

关于线程

时间:2017-11-27 19:57:07      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:gen   实现   exception   mon   ted   stat   end   opened   优先   

线程的创建有两种方式,一种是类的继承extends Thread,一种是接口的实现implements Runnable

图示:

技术分享图片

 

第一种:

技术分享图片
 1 package com.mon11.day27;
 2 /** 
 3 * 类说明 :
 4 * @author 作者 :chenyanlong
 5 * @version 创建时间:2017年11月27日 
 6 */
 7 public class Mythread extends Thread{
 8 
 9     public void run(){
10         for(int i=0;i<100;i++){
11             System.out.println(getName()+"-------------->"+i);
12         }
13     }
14 }
View Code

第二种:

技术分享图片
 1 package com.mon11.day27;
 2 /** 
 3 * 类说明 :
 4 * @author 作者 :chenyanlong
 5 * @version 创建时间:2017年11月27日 
 6 */
 7 public class Mythread1 implements Runnable{
 8 
 9     @Override
10     public void run() {
11         for(int i=0;i<100;i++){
12             System.out.println(Thread.currentThread().getName()+"----------->"+i);
13         }
14         
15     }
16 
17 }
View Code

实现方法:

技术分享图片
 1 package com.mon11.day27;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import org.junit.Test;
 6 
 7 /** 
 8 * 类说明 :
 9 * @author 作者 :chenyanlong
10 * @version 创建时间:2017年11月27日 
11 */
12 public class TestMythread {
13 
14     @Test
15     public void test() {
16         Mythread mythread=new Mythread();
17         mythread.start();
18         
19         for(int i=0;i<100;i++){
20             System.out.println(Thread.currentThread().getName()+"----->"+i);
21         }
22     }
23 
24     @Test
25     public void test1() {
26         Mythread1 mythread1=new Mythread1();
27         Thread thread1=new Thread(mythread1);
28         thread1.start();
29         
30         for(int i=0;i<10;i++){
31             System.out.println(Thread.currentThread().getName()+"----->"+i);
32         }
33     }
34     
35     @Test
36     public void test2() {
37         Mythread mythread=new Mythread();
38         mythread.start();
39         Mythread mythread1=new Mythread();
40         mythread1.start();
41         Mythread mythread2=new Mythread();
42         mythread2.start();
43         
44         for(int i=0;i<10;i++){
45             System.out.println(Thread.currentThread().getName()+"----->"+i);
46         }
47     }
48 }
View Code

关于优先级的实现方法,以及join的用法,守护线程:

技术分享图片
 1 package com.mon11.day27;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import org.junit.Test;
 6 
 7 /** 
 8 * 类说明 :
 9 * @author 作者 :chenyanlong
10 * @version 创建时间:2017年11月27日 
11 */
12 public class Test2 {
13 
14     //关于优先级,优先级越高,争取cpu的权利就越大
15     @Test
16     public void test3() {
17     
18         for(int i=0;i<10;i++){
19             try {
20                 Thread.sleep(1000);
21             } catch (InterruptedException e) {
22                 // TODO Auto-generated catch block
23                 e.printStackTrace();
24             }
25             System.out.println(Thread.currentThread().getName()+"----->"+i);
26         }
27     }
28 
29     //关于关于join()
30     @Test
31     public void test4() {
32     
33         Mythread mythread=new Mythread();
34         try {
35             mythread.join();
36         } catch (InterruptedException e) {
37             // TODO Auto-generated catch block
38             e.printStackTrace();
39         }
40         mythread.start();
41         Mythread mythread1=new Mythread();
42         mythread1.start();     
43     }
44     
45     //关于关于守护线程
46     @Test
47     public void test5() {
48     
49         Mythread mythread=new Mythread();
50         mythread.setDaemon(true);
51         mythread.start();
52         Mythread mythread1=new Mythread();
53         mythread1.start();     
54     }
55 }
View Code

 这个是优先级的验证:

技术分享图片
 1 package com.mon11.day27;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import org.junit.Test;
 6 
 7 /** 
 8 * 类说明 :
 9 * @author 作者 :chenyanlong
10 * @version 创建时间:2017年11月27日 
11 */
12 public class Test3 {
13 
14     //关于优先级,优先级越高,争取cpu的权利就越大
15     @Test
16     public void test() {
17         Mythread mythread=new Mythread();
18         mythread.setPriority(Thread.MIN_PRIORITY);
19         mythread.start();
20         Mythread mythread1=new Mythread();
21         mythread1.setPriority(Thread.MAX_PRIORITY);
22         mythread1.start();
23         Mythread mythread2=new Mythread();
24         mythread2.setPriority(Thread.NORM_PRIORITY);
25         mythread2.start();
26         
27         System.out.println("优先级的输出"+mythread.getPriority()+" "+mythread1.getPriority()+" "+mythread2.getPriority());
28         /*for(int i=0;i<10;i++){
29             System.out.println(Thread.currentThread().getName()+"----->"+i);
30         }*/
31     }
32 
33 }
View Code

 

关于线程

标签:gen   实现   exception   mon   ted   stat   end   opened   优先   

原文地址:http://www.cnblogs.com/chenyanlong/p/7905566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!