线程-同步代码块的问题。。。。。

问题描述

同步代码块的问题。。。。。

数据库的几张表常用表的数据,我想写到几个静态变量中。
然后提供若干个get方法,同时还有一个set方法重置所有的静态变量。
请问如何能够在set重置方法没完成以前,让get方法的线程等待?
同时几个get方法又不能有相互影响。
就是set没完成,所有的get需要等待,但是不同的get之间没完成不需要等待。
来人啊。。。

解决方案

http://my.oschina.net/tinglanrmb32/blog/339661

解决方案二:

http://blog.csdn.net/5iasp/article/details/7308584

解决方案三:

代码块同步:
防止多个线程无序访问共享资源,将对共享资源进行操作的关键代码放入一个同步代码块中。
syschronized(Object){}
1)当一个线程想进入该对象的关键代码,先获得该对象的锁。若在一个类的代码块里object是this,则该object上锁了
2)一个线程访问object的同步代码,其他线程不可以访问该object其他的syschronized的同步代码块(被暂时阻......
答案就在这里:代码块同步

解决方案四:

用一个flag变量来判断是否已经set完?

解决方案五:

如果是用的vc++,那么可以使用事件对象进行同步~~~具体的可以网上搜下或者看下《windows高级编程》

解决方案六:

可以添加个锁啊,我在音视频编程都是这样操作,这线程中相当于共享内存,得通过锁的操作!希望能帮到你!

时间: 2024-12-23 04:16:14

线程-同步代码块的问题。。。。。的相关文章

银行取款[多线程]{使用同步代码块确保线程同步}

经典例子:老婆(朱丽叶)老公(罗密欧),使用银行卡和存折,或者网银等,同时对同一账户操作的安全问题. 此处用多线程实现,同时取款的模拟实现,使用同步代码块确保线程同步,查看取款安全隐患问题,代码如下: --------------------------------------------------------------------------------------------------------------------------------------  * 线程同步 :使用同步块

基本线程同步(五)使用Lock同步代码块

声明:本文是< Java 7 Concurrency Cookbook >的第二章,作者: Javier Fernández González     译者:许巧辉 校对:方腾飞 使用Lock同步代码块 Java提供另外的机制用来同步代码块.它比synchronized关键字更加强大.灵活.它是基于Lock接口和实现它的类(如ReentrantLock).这种机制有如下优势: 它允许以一种更灵活的方式来构建synchronized块.使用synchronized关键字,你必须以结构化方式得到释

java线程学习4——线程同步之同步代码块

  模拟一个场景,两个人对同一个账户同时取钱   package cn.xy.Thread; public class Account {  /**   * 账户号   */  private String accountNo;  /**   * 账户余额   */  private double balance;  public Account()  {   super();  }  public Account(String accountNo, double balance)  {   s

JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this

JAVA之旅(十三)--线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this 我们继续上个篇幅接着讲线程的知识点 一.线程的安全性 当我们开启四个窗口(线程)把票陆陆续续的卖完了之后,我们要反思一下,这里面有没有安全隐患呢?在实际情况中,这种事情我们是必须要去考虑安全问题的,那我们模拟一下错误 package com.lgl.hellojava; import javax.security.auth.callback.TextInputCallback

JAVA里synchronized同步代码块的一点疑问

问题描述 代码如下:public class SomeObj { public void print(int i){ System.out.println(Thread.currentThread().getName()+DateHelper.getNow()+ " " + i); try { wait(1000); } catch (InterruptedException e) { e.printStackTrace(); } }}public class ThreadA exte

JAVA生产者消费者(线程同步)代码学习示例_java

一.问题描述 生产者消费者问题是一个典型的线程同步问题.生产者生产商品放到容器中,容器有一定的容量(只能顺序放,先放后拿),消费者消费商品,当容器满了后,生产者等待,当容器为空时,消费者等待.当生产者将商品放入容器后,通知消费者:当消费者拿走商品后,通知生产者. 二.解决方案 对容器资源加锁,当取得锁后,才能对互斥资源进行操作. 复制代码 代码如下: public class ProducerConsumerTest {     public static void main(String []

java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)

import java.util.concurrent.locks.*; class DuckMsg{ int size;//烤鸭的大小 String id;//烤鸭的厂家和标号 DuckMsg(){ } DuckMsg(int size, String id){ this.size=size; this.id=id; } public String toString(){ return id + " 大小为:" + size; } } class Duck{ private int

代码块与函数间的同步,其中一个线程只运行了一次

问题描述 publicclassThreadDemo3{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubThreadTest2test2=newThreadTest2();newThread(test2).start();//这个线程调用同步代码块//让主线程暂停一会儿try{Thread.sleep(1);}catch(Exceptione){//TODO:handleexceptionSystem.out.pr

代码块与函数间的同步。为什么线程0只执行了一次

问题描述 publicclassThreadDemo3{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubThreadTest2test2=newThreadTest2();newThread(test2).start();//这个线程调用同步代码块//让主线程暂停一秒try{Thread.sleep(10);}catch(Exceptione){//TODO:handleexceptionSystem.out.pr