J2SE视频笔记(7)

J2SE视频笔记(6):

第三十一讲:Java多线程

  • 多线程:简单的来讲就是你既可以一边听音乐,又可以一边看书。
  • Java多线程实现:
  • (1)继承自Thread类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    package Unit08.sec01;
    /**
    * 这里是直接继承自Thread类
    * 然后要使用的话就直接new一个Thread类就好了
    * @author hclmaster
    *
    */
    public class Thread01 extends Thread {
    private int baoZi=1;
    private String threadName;
    public Thread01(String threadName) {
    super();
    this.threadName = threadName;
    }
    @Override
    public void run() {
    while(baoZi<=10){
    System.out.println(threadName+"吃第"+baoZi+"个包子");
    baoZi++;
    }
    }
    public static void main(String[] args) {
    // 这里是张三和李四每个人都同时进行吃10个包子
    Thread01 t1=new Thread01("张三线程");
    Thread01 t2=new Thread01("李四线程");
    t1.start();
    t2.start();
    }
    }
  • (2)实现Runnable接口

  • 以下代码块实现了Runnable接口,并且在main中实现了调用两种方法
  • 第一种就和上面(1)中的那个相似,然后第二种是利用一个对象去创建多个线程
  • 这里synchronized表示一次仅允许一个线程进入
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package Unit08.sec01;
    public class Thread02 implements Runnable {
    private int baoZi=1;
    private String threadName;
    public Thread02(String threadName) {
    super();
    this.threadName = threadName;
    }
    /**
    * 加上synchronized就说明这个线程是同步的,即为一次只允许一个线程进入
    */
    public synchronized void run() {
    while(baoZi<=10){
    System.out.println(threadName+"吃第"+baoZi+"个包子");
    baoZi++;
    }
    }
    public static void main(String[] args) {
    /*Thread02 t1=new Thread02("张三线程");
    Thread02 t2=new Thread02("李四线程");
    // 把t1,t2作为参数传到Thread类里面去
    Thread t11=new Thread(t1);
    Thread t12=new Thread(t2);
    t11.start();
    t12.start();*/
    Thread02 t3=new Thread02("超级张三线程");
    Thread t31=new Thread(t3);
    Thread t32=new Thread(t3);
    Thread t33=new Thread(t3);
    // 实现资源共享,用一个类的对象去创建多个线程
    t31.start();
    t32.start();
    t33.start();
    }
    }

热评文章