关于java 多线程线程Thread 共享资源的简单用法和理解

最近看到JAVA里面对资源共享引入的synchronized的同步机制,我们都知道Thread这个类的构造函数里面有类似一个实现Runnable这个接口的类,这个类可以存放着多个线程之间的资源共享,比如:

    public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}


这个代码里面可以看到我们可以直接写一个自己的类去实现这个接口Runnable,然后创建每个Thread用一份,就可以达到了资源共享了,比如:

        Runable_demo run = new Runable_demo();
// TODO Auto-generated method stub
new Thread(run,"Tread one").start();
new Thread(run,"Tread two").start();
new Thread(run,"Tread three").start();
new Thread(run,"Tread four").start();
new Thread(run,"Tread five").start();
new Thread(run,"Tread six").start();


这里强调用一点,当然对于在自己实现的Runable_demo这个类里面可以直接定义一些private 非static的数据了,但是这里有个注意的是对于一个类的static变量,他们不管是不是重新new,他的资源都是共享的,比如:

        new Thread(new Runable_demo(),"Tread one").start();
new Thread(new Runable_demo(),"Tread two").start();
new Thread(new Runable_demo(),"Tread three").start();
new Thread(new Runable_demo(),"Tread four").start();
new Thread(new Runable_demo(),"Tread five").start();
new Thread(new Runable_demo(),"Tread six").start();


/**
*
*/
package thread_test;

/**
* @author Administrator
*
*/
public class Runable_demo implements Runnable{

private static int g_value = 100;
/**
* @param args
*/
public static void main(String[] args) {

// TODO Auto-generated method stub
new Thread(new Runable_demo(),"Tread one").start();
new Thread(new Runable_demo(),"Tread two").start();
new Thread(new Runable_demo(),"Tread three").start();
new Thread(new Runable_demo(),"Tread four").start();
new Thread(new Runable_demo(),"Tread five").start();
new Thread(new Runable_demo(),"Tread six").start();

}

/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run()
{
while(true)
{
speical_print();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

synchronized void speical_print()
{
if(g_value > 0)
System.out.println(Thread.currentThread().getName()+" : ........ value = " + g_value--);
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值