使用两种创建线程的方法实现数据共享
继承Thread能否实现数据共享
先写一个简单的线程类
public class MyThread extends Thread {
private int a = 0;
@Override
public void run() {
a++;
System.out.println("线程开始计数" + a);
}
}
如果数据共享,则a会从1开始到2打印出来.
通过继承Thread实现数据共享与不共享,代码如下:
数据共享创建方法:
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
Thread thread1 = new Thread(myThread);
thread.start();
thread1.start();
}
结果如下
数据不共享创建方法:
public static void main(String[] args) {
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
}
结果如下
实现Runable接口呢
线程类
public class MyThread2 implements Runnable {
private int a = 0;
@Override
public void run() {
a++;
System.out.println("线程开始计数" + a);
}
}
实现数据共享
public static void main(String[] args) {
MyThread2 mt = new MyThread2();
Thread t1 = new Thread(mt);
Thread t2 = new Thread(mt);
t1.start();
t2.start();
}
实现数据不共享
public static void main(String[] args) {
MyThread2 mt = new MyThread2();
MyThread2 mt1 = new MyThread2();
Thread thread = new Thread(mt);
Thread thread1 = new Thread(mt1);
thread.start();
thread1.start();
}
由此可见实现Runable接口和继承Thread类都可以实现数据共享或者不共享.