Java多线程-Java多线程实现 0

来源:互联网 发布:网络mg老虎机技巧规律 编辑:程序博客网 时间:2024/06/05 02:30

Java多线程-Java多线程实现


1,继承Thread类

2,实现Runnable接口

3,多线程实现数据共享




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 com.java1234.chap09.sec02;
 
public class Thread1 extends Thread{
 
    private int baoZi=1;
     
    private String threadName;
 
    public Thread1(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个
        Thread1 t1=new Thread1("张三线程");
        Thread1 t2=new Thread1("李四线程");
        t1.start();
        t2.start();
    }
     
     
     
}

运行输出:

张三线程 吃1第个包子

张三线程 吃2第个包子

张三线程 吃3第个包子

张三线程 吃4第个包子

张三线程 吃5第个包子

张三线程 吃6第个包子

张三线程 吃7第个包子

张三线程 吃8第个包子

张三线程 吃9第个包子

张三线程 吃10第个包子

李四线程 吃1第个包子

李四线程 吃2第个包子

李四线程 吃3第个包子

李四线程 吃4第个包子

李四线程 吃5第个包子

李四线程 吃6第个包子

李四线程 吃7第个包子

李四线程 吃8第个包子

李四线程 吃9第个包子

李四线程 吃10第个包子



2,实现Runnable接口

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 com.java1234.chap09.sec02;
 
public class Thread2 implements Runnable{
 
    private int baoZi=1;
     
    private String threadName;
 
    public Thread2(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个
        Thread2 t1=new Thread2("张三线程");
        Thread2 t2=new Thread2("李四线程");
        Thread t11=new Thread(t1);
        Thread t12=new Thread(t2);
        t11.start();
        t12.start();
    }
 
}

运行输出:

张三线程 吃1第个包子

张三线程 吃2第个包子

李四线程 吃1第个包子

张三线程 吃3第个包子

李四线程 吃2第个包子

李四线程 吃3第个包子

李四线程 吃4第个包子

李四线程 吃5第个包子

李四线程 吃6第个包子

李四线程 吃7第个包子

李四线程 吃8第个包子

张三线程 吃4第个包子

李四线程 吃9第个包子

李四线程 吃10第个包子

张三线程 吃5第个包子

张三线程 吃6第个包子

张三线程 吃7第个包子

张三线程 吃8第个包子

张三线程 吃9第个包子

张三线程 吃10第个包子


3,多线程实现数据共享

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 com.java1234.chap09.sec02;
 
public class Thread3 implements Runnable{
 
    private int baoZi=1;
     
    private String threadName;
 
    public Thread3(String threadName) {
        super();
        this.threadName = threadName;
    }
 
    @Override
    public synchronized void run() {
        while(baoZi<=10){
            System.out.println(threadName+" 吃"+baoZi+"第个包子");
            baoZi++;
        }
    }
     
    public static void main(String[] args) {
        Thread3 t1=new Thread3("超级张三线程");
        Thread t11=new Thread(t1);
        Thread t12=new Thread(t1);
        Thread t13=new Thread(t1);
        t11.start();
        t12.start();
        t13.start();
    }
 
}

运行输出:

超级张三线程 吃1第个包子

超级张三线程 吃2第个包子

超级张三线程 吃3第个包子

超级张三线程 吃4第个包子

超级张三线程 吃5第个包子

超级张三线程 吃6第个包子

超级张三线程 吃7第个包子

超级张三线程 吃8第个包子

超级张三线程 吃9第个包子

超级张三线程 吃10第个包子


这里我们定义一个实例 然后用这个实例来是实例化三个Thread对象,run方法我们要加synchronized锁,否则会出现多个线程同时进入方法的情况,导致多个线程吃同一个包子;