• Document


    线程的创建有两种方式,一种是类的继承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
  • 相关阅读:
    请求失败或服务未及时响应。有关详细信息,请参见事件日志或其他适用的错误日志
    12篇学通C#网络编程——第一篇 基础之进程线程(转)
    关于XP和win7前置音频插孔无声音的解决办法
    进程,线程,主线程,异步
    SQL 在什么情况下使用全表扫描
    性能的一些设置
    清除Windows 7通知区域的旧图标
    操作office
    数据库索引
    SCSI
  • 原文地址:https://www.cnblogs.com/chenyanlong/p/7905566.html
Copyright © 2020-2023  润新知