java多线程学习笔记2

 
/**
 * 演示一个线程写数据的同时另一个线程读取数据时的同步问题
 * 
 * 
@author midi13
 * 
@since 2006
 * 
 
*/

public class SynTest {
    
private String firstName, lastName;

    
private synchronized String getName() {
        String result 
= firstName + " " + lastName;
        
return result;
    }


    
private synchronized void setName(String firstName, String lastName) {
        print(
"entering setName");
        
this.firstName = firstName;
        print(
"Set first name have done firstName=" + this.firstName);
        
try {
            Thread.sleep(
1000);
        }
 catch (InterruptedException e) {
        }


        
this.lastName = lastName;
        print(
"set last name have done,and leave setName() method.firstName="
                
+ this.firstName + " lastName=" + this.lastName);
    }


    
private static void print(String msg) {
        String thread 
= Thread.currentThread().getName();
        System.out.println(thread 
+ "" + msg);
    }


    
public static void main(String[] args) {
        
// 必需声明为final,否则runnable里面的run()方法不能访问。
        final SynTest test1 = new SynTest();
        
// 设置初始值
        test1.setName("arzu""guli");

        Runnable run1 
= new Runnable() {
            
public void run() {
                test1.setName(
"kang""midi");
            }

        }
;
        
// 修改名字线程
        Thread threadOne = new Thread(run1, "threadOne");
        threadOne.start();

        
try {
            Thread.sleep(
200);
        }
 catch (InterruptedException e) {
        }


        Runnable run2 
= new Runnable() {
            
public void run() {
                print(
"读取" + test1.getName());
            }

        }
;
        
// 读取名字线程
        Thread threadTwo = new Thread(run2, "threadTwo");
        threadTwo.start();
        System.out.println(
"main() exit");
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值