线程内部的数据共享

线程内部的数据共享

同样一个线程类, 它可以实例化出 很多线程

用同一个实现了 Runnable接口 的对象 作为参数, 创建多个线程

多个线程 共享 同一对象中的 相同的数据

只用一个 Runnable类型的对象 为参数, 创建3个线程

public class ShareTargetTester {
    public static void main(String[] args) {
        TestThread threadobj = new TestThread();
        System.out.println("Starting threads");
        
        new Thread(threadobj, "Thread1").start();
        new Thread(threadobj, "Thread2").start();
        new Theead(threadobj, "Thread3").start();
        
        System.out.println("Threads started, main ends]\n");
    }
}
class TestThread implements Runnable {
    private int sleepTime;
    public TestThread() {
        sleepTime = (int) (Math.random() * 6000);
    }
    
    public void run() {
        try {
            System.out.println(Thread.currentThread().getName() + "going to sleep for" + sleepTime);
            Thread.sleep(sleepTime);
        } catch (InterruptedException exception) {
            
        };
        
        System.out.println(Thread.currentThread().getName() + "finished");
    }
}

说明

因为是用一个 Runnable类型对象 创建的 3个新线程, 这3个线程 就共享了 这个对象的私有成员 sleepTime,

在本次运行中, 3个线程都休眠了 966毫秒

独立且同时运行的线程, 有时需要共享一些数据, 并且考虑到彼此的 状态 和 动作

参考链接

https://www.xuetangx.com/learn/THU08091000252/THU08091000252/7754101/video/12732924

上一篇:【大数据Java基础- Java并发 16】J.U.C之线程池:线程池的基础架构


下一篇:Thread的源码分析