[android-developers] Re: Some of the strange JAVA syntax - android specifics?

2009-04-02 Thread Odessa Silverberg

 synchronized:
 I'd suggest your starting reading about Java Synchronization.
 'synchronized' blocks prevent multiple threads from executing the same
 block of code at the same time. They are used to synchronize access to
 methods and instance-variables and avoid race-conditions. Careless use
 of 'synchronized' block, however, could cause dead-locks.
In other word, similar to the lock key word in C/C++
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Some of the strange JAVA syntax - android specifics?

2009-04-02 Thread Marco Nelissen

On Thu, Apr 2, 2009 at 10:13 AM, Odessa Silverberg
silverberg.ode...@googlemail.com wrote:

 synchronized:
 I'd suggest your starting reading about Java Synchronization.
 'synchronized' blocks prevent multiple threads from executing the same
 block of code at the same time. They are used to synchronize access to
 methods and instance-variables and avoid race-conditions. Careless use
 of 'synchronized' block, however, could cause dead-locks.
 In other word, similar to the lock key word in C/C++

There is no lock keyword in C/C++

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Some of the strange JAVA syntax - android specifics?

2009-04-02 Thread Stoyan Damov

Perhaps he was thinking of C#'s lock keyword ;)

On Thu, Apr 2, 2009 at 8:17 PM, Marco Nelissen marc...@android.com wrote:

 On Thu, Apr 2, 2009 at 10:13 AM, Odessa Silverberg
 silverberg.ode...@googlemail.com wrote:

 synchronized:
 I'd suggest your starting reading about Java Synchronization.
 'synchronized' blocks prevent multiple threads from executing the same
 block of code at the same time. They are used to synchronize access to
 methods and instance-variables and avoid race-conditions. Careless use
 of 'synchronized' block, however, could cause dead-locks.
 In other word, similar to the lock key word in C/C++

 There is no lock keyword in C/C++

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Some of the strange JAVA syntax - android specifics?

2009-04-01 Thread Streets Of Boston

@Override is a so-called annotation.
It does not generate any byte-code/runnable-code.
It just tells the compiler that the method below it is an override of
its super-class' method.
If your super-class changes its signature of onDraw, your compiler
will warn you about the fact that your method (in this case onDraw) no
longer overloads the super-class version of onDraw.

Try it your self: change 'protected void onDraw(Canvas canvas)' into
'protected boolean onDraw(Canvas canvas)' and do a 'return true;' at
the bottom of this method. You'll get a compiler error.

You can leave @Override out. It's just a safeguard.

synchronized:
I'd suggest your starting reading about Java Synchronization.
'synchronized' blocks prevent multiple threads from executing the same
block of code at the same time. They are used to synchronize access to
methods and instance-variables and avoid race-conditions. Careless use
of 'synchronized' block, however, could cause dead-locks.


E.g.
public synchronized boolean isPaused() {
  return mPaused;
}

public synchronized void pause() {
  mPaused = true;
}

This makes sure that mPaused is always read and/or updated by one
thread at a time. If thread-1 is inside isPaused() and thread-2 is
trying to call isPaused() or pause(), thread-2 waits until thread-1
exits isPaused().

A thread entering a synchronized block, obtains a lock on the object
specified (in above example, the object is 'this'). Any other thread
trying to do the same has to wait.
A thread exiting a synchronized block, releases the lock on the
object. Any waiting thread will now wake up and try to obtain the
lock.

BTW:
public synchronized void someMethod() {
  ...
}

is the same as
public synchronized void someMethod() {
  synchronized(this) {
...
  }
}

and
public static synchronized void someStaticMethod() {
  ...
}

is the same as
public static synchronized void someStaticMethod() {
  synchronized(MyClass.class) {
...
  }
}

On Apr 1, 3:29 am, Bin Chen binary.c...@gmail.com wrote:
 I am a C programmer before, and I am looking into android source code
 right now, some JAVA syntax is confusing, I am not sure whether or not
 it's android related, see:

         @Override
         protected void onDraw(Canvas canvas) {
             synchronized (this) {
                 if (mBitmap != null) {
                     final Paint paint = mPaint;
                     final Path path = mPath;
                     final int outer = 0xFFC0C0C0;
                     final int inner = 0xFFff7010;

 1) What's the meaning of Override? Is it ommitable?
 2) What does the synchronized mean?

 Thanks.
 Bin
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---