java1234开源博客系统
博客信息

Java多线程-Java多线程实现

0
发布时间:『 2016-12-04 14:38』  博客类别:Java核心基础  阅读(7203)

Java多线程-Java多线程实现


1,继承Thread类

2,实现Runnable接口

3,多线程实现数据共享




1,继承Thread类

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接口

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,多线程实现数据共享

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锁,否则会出现多个线程同时进入方法的情况,导致多个线程吃同一个包子;


 

关键字:   java多线程     Thread     Runnable  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有