线程资源共享:java实现

package tread;

/*线程资源共享 
* 解决数据共享问题,必须使用同步,所谓同步就是指多线程在同一时间内只能有一个线程执行制定代码 
* 同步方法:    1.同步代码块     synchronized(要同步的对象[随便定义的对象,标记同步线程]){ 
*                                 要同步代码块                            
*                              } 
*                 2.同步方法    public synchronized void method(){ 
*                                 要同步的操作 
*                             } 
* 同步方法问题:同步代码会降低性能,但是提高了线程安全 

* 使用同步方法需要遵循的基本原则: 
*         1.是代码块简洁。把不随线程变化的预处理和后处理移出synchronized块 
*         2.不要阻塞。如InputStream.read() 
*         3.在当前代码加锁时,不要轻易的调用其它方法,可能造成死锁 
* */

public class ShareDemo { 
    public static void main(String[] args) { 
        ShareThreadOne demo = new ShareThreadOne(); 
        Thread one = new Thread(demo,"小白"); 
        Thread two = new Thread(demo,"小风"); 
        one.start(); 
        two.start(); 
    } 
}


class ShareThreadOne implements Runnable{ 
    Object obj = new Object();//同步标记对象 
    public void run() { 
        //同步代码块 
        /*synchronized (obj) { //锁死线程对象,此时对象O为0 
            System.out.println(Thread.currentThread().getName()+",正在拉屎"); 
            try { 
                Thread.sleep(1000); 
            } catch (InterruptedException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
            System.out.println(Thread.currentThread().getName()+"拉完了"); 
        }*/ 
        
        doMethod(); 
    } 
    
    
    //同步方法 
    public synchronized void doMethod(){ 
        System.out.println(Thread.currentThread().getName()+",正在拉屎"); 
        try { 
            Thread.sleep(1000); 
        } catch (InterruptedException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
        System.out.println(Thread.currentThread().getName()+"拉完了"); 
    } 
}


线程资源共享:java实现
https://www.lingyepro.com/archives/23
作者
零叶独舞
发布于
2019年03月05日
许可协议