concurrencyproblem

22
Concurrency Problem Adriano Patrick Cunha - UDCE quarta-feira, 10 de outubro de 2012

Upload: adriano-patrick-cunha

Post on 29-Jun-2015

302 views

Category:

Business


0 download

TRANSCRIPT

Page 1: Concurrencyproblem

Concurrency ProblemAdriano Patrick Cunha - UDCE

quarta-feira, 10 de outubro de 2012

Page 2: Concurrencyproblem

Evolution of processors

quarta-feira, 10 de outubro de 2012

Page 3: Concurrencyproblem

Big Data to process

quarta-feira, 10 de outubro de 2012

Page 4: Concurrencyproblem

What Possibilities ?

quarta-feira, 10 de outubro de 2012

Page 5: Concurrencyproblem

Concurrence?

quarta-feira, 10 de outubro de 2012

Page 6: Concurrencyproblem

Which options ?

quarta-feira, 10 de outubro de 2012

Page 7: Concurrencyproblem

Functional Programming language ?

quarta-feira, 10 de outubro de 2012

Page 8: Concurrencyproblem

5

API java.util.concurrent

quarta-feira, 10 de outubro de 2012

Page 9: Concurrencyproblem

Thead-Safe

quarta-feira, 10 de outubro de 2012

Page 10: Concurrencyproblem

Thead-Safe

private  Set<String>  ipAddressSet  =  new  HashSet<String>();

quarta-feira, 10 de outubro de 2012

Page 11: Concurrencyproblem

Thead-Safe

private  Set<String>  ipAddressSet  =  new  HashSet<String>();  private  Set<String>  ipAddressSet  =  Collections.

             synchonizedSet(new  HashSet<String>());

quarta-feira, 10 de outubro de 2012

Page 12: Concurrencyproblem

Thead-Safe

private  Set<String>  ipAddressSet  =  new  HashSet<String>();  private  Set<String>  ipAddressSet  =  Collections.

             synchonizedSet(new  HashSet<String>());

private  BlockingQueue<String>  ipAddress=new  LinkedBlockingQueue<String>();

quarta-feira, 10 de outubro de 2012

Page 13: Concurrencyproblem

Thead-Safe

private  Set<String>  ipAddressSet  =  new  HashSet<String>();  private  Set<String>  ipAddressSet  =  Collections.

             synchonizedSet(new  HashSet<String>());

private  BlockingQueue<String>  ipAddress=new  LinkedBlockingQueue<String>();

fast-fail iterators

weakly consistent iterators

quarta-feira, 10 de outubro de 2012

Page 14: Concurrencyproblem

Thead-Safe

ConcurrentHashMap,  CopyOnWriteArrayList  e  CopyOnWriteArraySet

Outras  Coleções

quarta-feira, 10 de outubro de 2012

Page 15: Concurrencyproblem

Executor

Executor

ExecutorServiceScheduledExecutorService

quarta-feira, 10 de outubro de 2012

Page 16: Concurrencyproblem

Executor

(new Thread(r)).start();

quarta-feira, 10 de outubro de 2012

Page 17: Concurrencyproblem

Executor

(new Thread(r)).start();e.execute(r);

quarta-feira, 10 de outubro de 2012

Page 18: Concurrencyproblem

Thread Pools

Executors.newCachedThreadPool();

Executors.newFixedThreadPoll(n);

Executors.newSingleThreadExecutor();

quarta-feira, 10 de outubro de 2012

Page 19: Concurrencyproblem

class Counter { private int c = 0;

public void increment() { c++; }

public void decrement() { c--; }

public int value() { return c; }

}

1. Retrieve the current value of c.2. Increment the retrieved value by 1.3. Store the incremented value back in c.

1. Thread A: Retrieve c.2. Thread B: Retrieve c.3. Thread A: Increment retrieved value; result is 1.4. Thread B: Decrement retrieved value; result is -1.5. Thread A: Store result in c; c is now 1.6. Thread B: Store result in c; c is now -1.

Thread Pools

quarta-feira, 10 de outubro de 2012

Page 20: Concurrencyproblem

class SynchronizedCounter { private int c = 0;

public synchronized void increment() { c++; }

public synchronized void decrement() { c--; }

public synchronized int value() { return c; }

}

Thread Pools

quarta-feira, 10 de outubro de 2012

Page 21: Concurrencyproblem

Thread Pools

import java.util.concurrent.atomic.AtomicInteger;

class AtomicCounter { private AtomicInteger c = new AtomicInteger(0);

public void increment() { c.incrementAndGet(); }

public void decrement() { c.decrementAndGet(); }

public int value() { return c.get(); }

}

quarta-feira, 10 de outubro de 2012

Page 22: Concurrencyproblem

Bibliografia

Livros

Concurrent Programming in Java, Design Principles and Patterns, Doug Lea, Addison-Wesley, 1999

Java Concurrency In Practice, Brian Goetz, Addison-Wesley, 2006

Links

http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html

http://www.jcp.org/en/jsr/detail?id=166

http://gee.cs.oswego.edu/dl/concurrency-interest/

http://www.devmedia.com.br/websys.2/webreader.asp?cat=6&revista=javamagazine_69

quarta-feira, 10 de outubro de 2012