SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
Philip	Yankov	
x8academy
l  Who	am	I?	
l  Current	Hardware	+	performance	
l  What	is	Java	Memory	Model	
l  Happens-before	
l  Memory	barriers	
Plan
Philip	Yankov	
•  Sofia	University	–	CS	and	AI	
•  Previous	experience:	
–  SAP	Labs	Bulgaria,	MicrosoN,	VMware	
–  Chobolabs	and	other	startups	
–  Toptal	
•  Global	winner	of	NASA	Space	Apps	Challenge	
with	a	prototype	for	Smart	Glove	
•  x8academy	–	an	Academy	for	BETTER	soNware	
engineers	
–  soon	AI	and	MulU-threading	courses
x	=	y	=	0	
x	=	1	
j	=	y	
y	=	1	
i	=	x	
Thread 1 Thread 2
What	could	be	the	result?	
l  Compiler	can	reorder	
instrucUons.	
l  Compiler	can	keep	
values	in	registers.	
l  Processor	can	reorder	
instrucUons.	
l  Values	may	not	be	
synchronized	to	main	
memory.
l  i	=	1;	j	=	1	
l  i	=	0;	j	=	1	
l  i	=	1;	j	=	0	
l  i	=	0;	j	=	0	
So	in	order	to	develop	a	mulU-threaded	applicaUon	we	
need	to	understand:		
•  In	what	order	the	acUons	are	executed	in	the	
applicaUon;		
•  How	does	the	data	sharing	between	threads?	
Answer(s)
Intel	processor
Processor
ac#on	 approximate	#me	(ns)	
typical	processor	instrucUon	 1	
fetch	from	L1	cache	 0.5	
branch	mispredicUon	 5	
fetch	from	L2	cache	 7	
mutex	lock/unlock	 25	
fetch	from	main	memory	 100	
2	kB	via	1	GB/s	 20.000	
seek	for	new	disk	locaUon	 8.000.000	
read	1	MB	sequenUally	from	disk	 20.000.000	
Source:	h*ps://gist.github.com/jboner/2841832	
ac#on	 approximate	#me	(ns)	
typical	processor	instrucUon	 1	
fetch	from	L1	cache	 0.5	
branch	mispredicUon	 5	
fetch	from	L2	cache	 7	
mutex	lock/unlock	 25	
fetch	from	main	memory	 100	
2	kB	via	1	GB/s	 20.000	
seek	for	new	disk	locaUon	 8.000.000	
read	1	MB	sequenUally	from	disk	 20.000.000	
Memory	access	Ume
JVM
Language	specificaUons	
•  Before	–	the	languages	specificaUons	do	not	make	
reference	to	any	parUcular	compiler,	opera#ng	
system,	or	CPU.	They	make	reference	to	an	abstract	
machine	that	is	a	generalizaUon	of	actual	systems.	
–  the	job	of	the	programmer	is	to	write	code	for	the	abstract	
machine	
–  the	job	of	the	compiler	is	to	actualize	that	code	on	a	
concrete	machine.	
•  By	coding	rigidly	to	the	spec,	you	can	be	certain	that	
your	code	will	compile	and	run	without	modificaUon	
on	any	system,	whether	today	or	50	years	from	now.
Language	specificaUons	
•  The	abstract	machine	in	previous	specificaUons	is	
fundamentally	single-threaded.	So	it	is	not	possible	to	
write	mulU-threaded	code	that	is	"fully	portable"	with	
respect	to	the	spec.	The	spec	does	not	even	say	
anything	about	the	atomicity	of	memory	loads	and	
stores	or	the	order	in	which	loads	and	stores	might	
happen.	
•  Nowadays,	the	abstract	machine	is	mul#-threaded	by	
design.	It	also	has	a	well-defined	memory	model;	that	
is,	it	says	what	the	compiler	may	and	may	not	do	when	
it	comes	to	accessing	memory.
•  The	Java	memory	model	(JMM)	is	the	model	that	describes	the	
behavior	of	memory	in	Java	program	(how	threads	interact)		
•  JMM	is	a	contract	between	hardware,	compiler	and	
programmers.	
–  A	promise	for	programmers	to	enable	implementaUon-independent	
reasoning	about	programs	
–  A	promise	for	security	to	prevent	unintended	informaUon	leakage	
–  A	promise	for	compilers:	common	hardware	and	soNware	
opUmizaUons	should	be	allowed	as	far	as	possible	without	violaUng	
the	first	two	requirements.		
	
Java	Memory	Model
Why	do	we	need	a	it?	
•  Different	(hardware)	plagorm	memory	models	(none	of	
them	match	the	JMM!!!)		
•  Many	JVM	implementaUons,		
•  It	is	not	easy	to	program	concurrently,		
•  Programmers	(have	to):	write	reliable	and	mulUthreaded	
code,		
•  Compiler	writers:	implement	opUmizaUon	which	will	be	a	
legal,	opUmizaUon	according	to	the	JLS		
•  Compiler	(have	to):	produce	fast	and	opUmal	naUve	code,		
•  Programmability,	portability,	performance
History	of	JMM	
•  The	Java	Memory	Model	(Manson,	Pugh	and	
Adve,	POPL	2005)	was	introduced	aNer	the	
original	memory	model	was	found	to	be	“fatally	
flawed”	(Pugh,	2000).	The	main	flaws	were:		
–  Many	opUmisaUons	were	illegal	(including	CSE),	
–  Final	fields	could	be	observed	to	change,	
–  Unclear	semanUcs	of	finalizaUon.		
•  The	JMM	aims	to	fix	these	problems	with	3	
different	fixes.		
•  The	core	of	the	JMM	only	deals	with	the	first	
problem.
OpUmizaUons	are	applied	almost	
exclusively	aNer	handing	responsibility	
to	the		
JVM’s	runUme	where	they	are	difficult	
to	comprehend.	
	
A	JVM	is	allowed	to	alter	the	executed	
program	as	long	as	it	remains	correct.	
The	Java	memory	model	describes	a	
contract	for	what	a	correct	program	is	
(in	the	context	of	mulU-threaded	
applicaUons).
Program	order:	
	
int	a	=	1;	
int	b	=	2;	
int	c	=	3;	
int	d	=	4;	
int	e	=	a	+	b;	
int	f	=	c	–	d;	
	
ExecuUon	order:	
	
int	d	=	4;	
int	c	=	3;	
int	f	=	c	–	d;	
int	b	=	2;	
int	a	=	1;	
int	e	=	a	+	b;	
•  We	would	like	all	acUons	in	the	program	to	be	executed	in	the	
same	order	as	the	one	wripen	by	a	programmer	in	the	iniUal	code
—	Program	Order.	But	some	types	of	opUmizaUon	require	certain	
changes,	leading	to	ExecuUon	Order	
InstrucUons	order
Two actions can be ordered by a happens-
before relationship. If one action happens-
before another, then the first is visible to and
ordered before the second.
Java Language Specification, Java SE 7 Edition
Happens-before	order
“Happens-before”	relaUon	rules	
•  Program	order	rule:	each	acUon	in	a	thread	happens-before	every	
acUon	in	that	thread	that	comes	later	in	the	program	order		
•  Lock	rule:	an	unlock	of	a	lock	happens-before	every	subsequent	
lock	on	that	same	lock	(this	applies	on	library	locks	as	well	as	on	
intrinsic	locks)		
•  Vola#le	variable	rule:	a	write	to	a	volaUle	field	happens-before	
every	subsequent	read	of	that	same	field	(this	applies	on	atomic	
variables	too)		
•  Thread	start	rule:	a	request	to	start	a	thread	happens	before	every	
acUon	in	the	started	thread		
•  Thread	termina#on	rule:	any	acUon	in	a	thread	happens-before	
any	other	thread	detects	that	thread	has	terminated	(==	any	other	
thread	successfully	returns	from	join()	on	that	thread)
“Happens-before”	relaUon	rules	
•  Interrup#on	rule:	a	thread	requesUng	interrupUon	on	
another	thread	happens-before	the	interrupted	thread	
detects	the	interrupt		
•  Finalizer	rule:	the	end	of	a	constructor	of	an	object	happens-
before	the	start	of	the	finalizer	for	that	object		
•  Constructor	rule:	serng	default	values	for	variables,	serng	
value	to	a	final	field	in	the	constructor	happens-before	the	
constructor	ends	
•  Atomicity	rule:	write	to	an	Atomic	variable	happens-before	
read	from	that	variable	
•  Happens	before	is	a	transi#ve	rela#on.
field-scoped	 method-scoped	
final
volatile
synchronized	(method/block)	
java.util.concurrent.locks.Lock
Using	the	above	keywords,	a	programmer	can	indicate	that	a	JVM	should	
refrain	from	op#miza#ons	that	could	otherwise	cause	concurrency	issues.	
	
In	terms	of	the	Java	memory	model,	the	above	concepts	introduce	addiUonal	
synchroniza#on	ac#ons	which	introduce	addiUonal	(parUal)	orders.	Without	
such	modifiers,	reads	and	writes	might	not	be	ordered	(weak	memory		
model)	what	results	in	a	data	race.	
	
A	memory	model	is	a	trade-off	between	a	language’s	simplicity		
(consistency/atomicity)	and	its	performance.	
JMM	building	blocks
•  VolaUle	reads/writes	can	not	be	reordered	-	Any	write	to	a	
volaUle/synchronizaUon	variable	establishes	a	happens-	
before	relaUonship	with	subsequent	reads	of	that	same	
variable.		
SynchronizaUon	AcUons
What	does	volaUle	do?	
•  Compilers	and	runUme	are	not	allowed	to	allocate	volaUle	
variables	in	registers	
•  VolaUle	longs	and	doubles	are	atomic	
•  VolaUle	reads	are	very	cheep	(no	locks	compared	to	
synchronized)		
•  VolaUle	increment	is	not	atomic	(!!!)	
•  Elements	in	volaUle	collecUon	are	not	volaUle	(for	example	
volaUle	int[])	
•  Consider	using	java.u6l.concurrent
•  Also	SA	elements	help	to	connect	the	
sequences	of	acUons	between	different	
threads,	in	such	way	forming	SynchronizaUon	
Order:		
SynchronizaUon	AcUons
•  But	let’s	examine	the	case,	when	we	have	
acUons	not	only	at	SA	elements,	what	will	
happen	with	x?		
SynchronizaUon	AcUons
•  What	if	reading	of	v1	have	idenUfied	5	in	y?		
SynchronizaUon	AcUons
•  What	if	reading	of	v1	have	idenUfied	0	in	y?	
SynchronizaUon	AcUons
•  Now	focus	on	another	case:		
SynchronizaUon	AcUons
•  And	one	more	case:		
SynchronizaUon	AcUons
class ArrayTest {
volatile boolean[] ready = new boolean[] { false };
int answer = 0;
void thread1() {
while (!ready[0]);
assert answer == 42;
}
void thread2() {
answer = 42;
ready[0] = true;
}
}
Declaring	an	array	to	be	volaUle	does	not	make	its	elements	vola#le!	In	the	above		
example,	there	is	no	write-read	edge	because	the	array	is	only	read	by	any	thread.	
	
For	such	volaUle	element	access,	use	java.u#l.concurrent.atomic.AtomicIntegerArray.	
Array	Elements
•  High	level		
– java.uUl.concurrent		
•  Low	level		
– synchronized()	blocks	and	methods,	
– java.uUl.concurrent.locks		
•  Low	level	primi#ves		
– volaUle	variables	
– java.uUl.concurrent.atomic		
SynchronizaUon
class ThreadLifeCycle {
int foo = 0;
void method() {
foo = 42;
new Thread() {
@Override
public void run() {
assert foo == 42;
}
}.start();
}
}	
Thread	start
instance = <allocate>;
instance.foo = 42;
<freeze instance.foo>	
if (instance != null) {
assert instance.foo == 42;
}
Ame	
.	.	.	
.	.	.	
happens-before	order	
dereference	order	
When	a	thread	creates	an	instance,	the	instance’s	final	fields	are	frozen.	The	Java	
memory	model	requires	a	field’s	ini#al	value	to	be	visible	in	the	iniUalized	form	to	
other	threads.	
This	requirement	also	holds	for	properUes	that	are	dereferenced	via	a	final	field,		
even	if	the	field	value’s	properUes	are	not	final	themselves	(memory-chain	order).	
constructor	
Does	not	apply	for	(reflec#ve)	changes	outside	of	a	constructor	/	class	iniUalizer.	
Final	fields	operaUons	order
class FinalFieldExample {
final int x;
int y;
static FinalFieldExample f;
public FinalFieldExample() {
x = 3;
y = 4;
}
static void writer() {
f = new FinalFieldExample();
}
static void reader() {
if (f != null) {
int i = f.x;
int j = f.y;
}
}
}
Guaranteed value 3
4 or 0 !!
Final	fields
What	operaUons	in	Java	are	atomic?	
•  Read/write	on	variables	of	primiUve	types	
(except	of	long	and	double	–	Word	Tearing	
problem),		
•  Read/write	on	volaUle	variables	of	primiUve	
type	(including	long	and	double),		
•  All	read/writes	to	references	are	always	
atomic	(hpp://bit.ly/2c8kn8i),		
•  All	operaUons	on	java.uUl.concurrent.atomic	
types,
Java	Memory	Model:	Access	atomicity	
•  In	order	to	provide	atomicity,	we	need	to	have	
this	support	from	hardware.		
•  Possible	problems:		
– The	absence	of	hardware	operaUons	for	read/
record	of	big	values;		
– The	request	to	memory’s	sub-system,	for	
example,	at	х86	you	can’t	place	the	data	point	at	
crossing	of	cashlines.
foo/1 = 0x0000	
foo/2 = 0xFFFF	foo/2 = 0x0000	
class WordTearing {
long foo = 0L;
void thread1() {
foo = 0x0000FFFF;
// = 2147483647
}
void thread2() {
foo = 0xFFFF0000;
// = -2147483648
}
}	
main	memory	(32	bit)	
processor	cache	(32	bit)	
1	
2	
foo/1 = 0xFFFF	
foo/2 = 0x0000	
foo/2 = 0xFFFF	
foo/1 = 0x0000	
processor	cache	(32	bit)	
foo/1 = 0xFFFF	
Atomicity
Source:	h*p://shipilev.net/blog/2014/safe-public-construcAon/	
x86	 ARM	
1	thread	 8	threads	 1	thread	 4	threads	
final	wrapper	 2.256	 2.485	 28.228	 28.237	
enum	holder	 2.257	 2.415	 13.523	 13.530	
double-checked	 2.256	 2.475	 33.510	 29.412	
synchronized	 18.860	 302.346	 77.560	 1291.585	
Problem:	how	to	publish	an	instance	of	a	class	that	does	not	define	its	fields	to	be	final?	
measured	in	ns/op;	conAnuous	instance	requests	
Besides	plain	synchroniza#on	and	the	double-checked	locking	idiom,	Java	offers:	
1.  Final	wrappers:	Where	double-checked	locking	requires	volaUle	field	access,	this		
access	can	be	avoided	by	wrapping	the	published	instance	in	a	class	that	stores	
the	singleton	in	a	final	field.	
2.  Enum	holder:	By	storing	a	singleton	as	a	field	of	an	enumeraUon,	it	is	guaranteed		
to	be	iniUalized	due	to	the	fact	that	enumeraUons	guarantee	full	iniUalizaUon.		
Safe	iniUalizaUon	and	publicaUon
What	other	acUons	need	specific	
order?
class Externalization {
int foo = 0;
void method() {
foo = 42;
jni();
}
native void jni(); /* {
assert foo == 42;
} */
}	
A	JIT-compiler	cannot	determine	the	side-effects	of	a	naUve	operaUon.	Therefore,		
external	ac#ons	are	guaranteed	to	not	be	reordered.	
External	acUons	include	JNI,	socket	communicaUon,	file	system	operaUons	or	
interacUon	with	the	console	(non-exclusive	list).	
program		
order	
External	acUon
l  LoadLoad	
l  StoreStore	
l  LoadStore	
l  StoreLoad	
Memory	Barriers
Required
barriers
2nd operation
1st operation
Normal Load Normal Store Volatile Load
MonitorEnter
Volatile Store
MonitorExit
Normal Load LoadStore
Normal Store StoreStore
Volatile Load
MonitorEnter
LoadLoad LoadStore LoadLoad LoadStore
Volatile Store
MonitorExit
StoreLoad StoreStore
The JSR-133 Cookbook for Compiler Writers
Memory	Barriers
Processor
ARM	 PowerPC	 SPARC	TSO	 x86	 AMD64	
load-load	 yes	 yes	 no	 no	 no	
load-store	 yes	 yes	 no	 no	 no	
store-store	 yes	 yes	 no	 no	 no	
store-load	 yes	 yes	 yes	 yes	 yes	
ARM	
x86	
Source:	Wikipedia	
Processor	opUmizaUons
64%	
78%	 42%	
Americans	owning	a	parUcular	device	in	2014.	
Source:	Pew	Research	center	
Devices	distribuUon
To	sum	up...	
•  Concurrent	programming	isn’t	easy,	
•  Design	your	code	for	concurrency	(make	it	right	
before	you	make	it	fast),		
•  Do	not	code	against	the	implementaUon.	Code	
against	the	specificaUon,		
•  Use	higher	level	synchronizaUon	wherever	
possible,	
•  Watch	out	for	useless	synchronizaUon,	
•  Use	Thread	Safe	Immutable	objects	
•  Keep	in	mind	the	Happens-before	rules
Further	reading		
•  Aleksey	Shipilëv:	One	Stop	Page	(hpp://bit.ly/2cqBt4x,	
hpps://shipilev.net/blog/2014/jmm-pragmaUcs/	)	
•  Brian	Goetz:	Java	Concurrency	in	PracUce	(
hpp://amzn.to/2cloe76)		
•  Pugh’s	“Fixing	the	JAVA	Memory	Model”		
•  Adve’s	“Shared	Memory	Consistency	Models:	A	
Tutorial”		
•  Dubois’	“Memory	Access	Buffering	in	MulUprocessors”		
•  Boehm’s	“Threads	cannot	be	implemented	as	a	library”
l  Loads	are	not	reordered	with	other	loads.	
l  Stores	are	not	reordered	with	other	stores.	
l  Stores	are	not	reordered	with	older	loads.	
l  Loads	may	be	reordered	with	older	stores	to	different	loca#ons	but	not	with	
older	stores	to	the	same	loca#on.	
l  In	a	mulUprocessor	system,	memory	ordering	obeys	causality	(memory	ordering	
respects	transiUve	visibility).	
l  In	a	mulUprocessor	system,	stores	to	the	same	locaUon	have	a	total	order.	
l  In	a	mul#processor	system,	locked	instruc#ons	have	a	total	order.	
l  Loads	and	stores	are	not	reordered	with	locked	instruc#ons.	
Intel	x86/64	Memory	model	details
Memory	barrier	-	LoadLoad	
• The	sequence:	Load1;	LoadLoad;	Load2	
• Ensures	that	Load1's	data	are	loaded	before	data	
accessed	by	Load2	and	all	subsequent	load	
instrucUons	are	loaded.	In	general,	explicit	
LoadLoad	barriers	are	needed	on	processors	that	
perform	speculaUve	loads	and/or	out-of-order	
processing	in	which	waiUng	load	instrucUons	can	
bypass	waiUng	stores.	On	processors	that	
guarantee	to	always	preserve	load	ordering,	the	
barriers	amount	to	no-ops.		
The JSR-133 Cookbook for Compiler Writers
Memory	barrier	-	StoreStore	
• 	The	sequence:	Store1;	StoreStore;	Store2	
• 	Ensures	that	Store1's	data	are	visible	to	other	
processors	(i.e.,	flushed	to	memory)	before	the	
data	associated	with	Store2	and	all	subsequent	
store	instrucUons.	In	general,	StoreStore	barriers	
are	needed	on	processors	that	do	not	otherwise	
guarantee	strict	ordering	of	flushes	from	write	
buffers	and/or	caches	to	other	processors	or	main	
memory.	
The JSR-133 Cookbook for Compiler Writers
Memory	barrier	-	LoadStore	
• 	The	sequence:	Load1;	LoadStore;	Store2	
• 	Ensures	that	Load1's	data	are	loaded	before	
all	data	associated	with	Store2	and	subsequent	
store	instrucUons	are	flushed.	LoadStore	
barriers	are	needed	only	on	those	out-of-order	
processors	in	which	waiUng	store	instrucUons	
can	bypass	loads.	
The JSR-133 Cookbook for Compiler Writers
Memory	barrier	-	StoreLoad	
• 	The	sequence:	Store1;	StoreLoad;	Load2	
• 	Ensures	that	Store1's	data	are	made	visible	to	other	processors	(i.e.,	
flushed	to	main	memory)	before	data	accessed	by	Load2	and	all	subsequent	
load	instrucUons	are	loaded.	StoreLoad	barriers	protect	against	a	
subsequent	load	incorrectly	using	Store1's	data	value	rather	than	that	from	
a	more	recent	store	to	the	same	locaUon	performed	by	a	different	
processor.	Because	of	this,	on	the	processors	discussed	below,	a	StoreLoad	
is	strictly	necessary	only	for	separaUng	stores	from	subsequent	loads	of	the	
same	locaUon(s)	as	were	stored	before	the	barrier.	StoreLoad	barriers	are	
needed	on	nearly	all	recent	mulUprocessors,	and	are	usually	the	most	
expensive	kind.	Part	of	the	reason	they	are	expensive	is	that	they	must	
disable	mechanisms	that	ordinarily	bypass	cache	to	saUsfy	loads	from	write-
buffers.	This	might	be	implemented	by	lerng	the	buffer	fully	flush,	among	
other	possible	stalls.		
The JSR-133 Cookbook for Compiler Writers
OperaUons	order
Processor LoadStore LoadLoad StoreStore StoreLoad Data
dependency
orders
loads?
Atomic
Conditional
Other
Atomics
Atomics
provide
barrier?
sparc-TSO no-op no-op no-op membar
(StoreLoad)
yes CAS:
casa
swap,
ldstub
full
x86 no-op no-op no-op mfence or
cpuid or
locked
insn
yes CAS:
cmpxchg
xchg,
locked
insn
full
ia64 combine
with
st.rel or
ld.acq
ld.acq st.rel mf yes CAS:
cmpxchg
xchg,
fetchadd
target +
acq/rel
arm dmb
(see below)
dmb
(see below)
dmb-st dmb indirection
only
LL/SC:
ldrex/strex
target
only
ppc lwsync
(see below)
lwsync
(see below)
lwsync hwsync indirection
only
LL/SC:
ldarx/stwcx
target
only
alpha mb mb wmb mb no LL/SC:
ldx_l/stx_c
target
only
pa-risc no-op no-op no-op no-op yes build
from
ldcw
ldcw (NA)
The JSR-133 Cookbook for Compiler Writers
* The x86 processors supporting "streaming SIMD" SSE2 extensions require LoadLoad "lfence" only only in connection with
these streaming instructions.
Memory	barriers	-	architecture

Weitere ähnliche Inhalte

Was ist angesagt?

Chapter 4-Environmental Scanning and Industry Analysis (3)_1.pptx
Chapter 4-Environmental Scanning and Industry Analysis (3)_1.pptxChapter 4-Environmental Scanning and Industry Analysis (3)_1.pptx
Chapter 4-Environmental Scanning and Industry Analysis (3)_1.pptxVeysel8
 
лекц 5, 6, 7
лекц 5, 6, 7лекц 5, 6, 7
лекц 5, 6, 7ariunubu
 
Haemopoiesis
HaemopoiesisHaemopoiesis
Haemopoiesissrs raju
 
валютын ханш ба төлбөрийн тэнцэл
валютын ханш ба төлбөрийн тэнцэлвалютын ханш ба төлбөрийн тэнцэл
валютын ханш ба төлбөрийн тэнцэлTuru Turuu
 
Lecture2
Lecture2Lecture2
Lecture2Bbujee
 
Үнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын сан
Үнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын санҮнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын сан
Үнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын санJvk Law
 
Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...
Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...
Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...PROF. EMMANUEL DOTONG
 
1.1 company governance copy (2)
1.1 company governance   copy (2)1.1 company governance   copy (2)
1.1 company governance copy (2)Du Dulmaa
 
Bookjournalist (1)
Bookjournalist (1)Bookjournalist (1)
Bookjournalist (1)Tuul Tuul
 
үнэт цаасны техник шинжилгээний аргууд,онцлог
үнэт цаасны техник шинжилгээний аргууд,онцлогүнэт цаасны техник шинжилгээний аргууд,онцлог
үнэт цаасны техник шинжилгээний аргууд,онцлогBattsetseg Battogtokh
 
нийгмийн социал бүтэц
нийгмийн социал бүтэцнийгмийн социал бүтэц
нийгмийн социал бүтэцBayarmaa Anu
 
Зах зээлийн идэвхижилийн шинжилгээ
Зах зээлийн идэвхижилийн шинжилгээЗах зээлийн идэвхижилийн шинжилгээ
Зах зээлийн идэвхижилийн шинжилгээByambadrj Myagmar
 

Was ist angesagt? (20)

банкны зээлийн үйлчилгээний маркетинг
банкны зээлийн үйлчилгээний маркетингбанкны зээлийн үйлчилгээний маркетинг
банкны зээлийн үйлчилгээний маркетинг
 
Chapter 4-Environmental Scanning and Industry Analysis (3)_1.pptx
Chapter 4-Environmental Scanning and Industry Analysis (3)_1.pptxChapter 4-Environmental Scanning and Industry Analysis (3)_1.pptx
Chapter 4-Environmental Scanning and Industry Analysis (3)_1.pptx
 
лекц 5, 6, 7
лекц 5, 6, 7лекц 5, 6, 7
лекц 5, 6, 7
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Haemopoiesis
HaemopoiesisHaemopoiesis
Haemopoiesis
 
2 091109053238-phpapp02
2 091109053238-phpapp022 091109053238-phpapp02
2 091109053238-phpapp02
 
валютын ханш ба төлбөрийн тэнцэл
валютын ханш ба төлбөрийн тэнцэлвалютын ханш ба төлбөрийн тэнцэл
валютын ханш ба төлбөрийн тэнцэл
 
Business Size
Business Size Business Size
Business Size
 
Lecture2
Lecture2Lecture2
Lecture2
 
Үнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын сан
Үнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын санҮнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын сан
Үнэт цаасны хөрөнгө оруулалтын болон хамтын хөрөнгө оруулалтын сан
 
Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...
Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...
Business Feasibility - Understanding the Marketing Aspect as a Feasibility Ch...
 
Securities burenjargal deriveties
Securities burenjargal derivetiesSecurities burenjargal deriveties
Securities burenjargal deriveties
 
1.1 company governance copy (2)
1.1 company governance   copy (2)1.1 company governance   copy (2)
1.1 company governance copy (2)
 
Human res planing 1 2010 hunii nuutsiin tuluvlultiin undes
Human res planing 1 2010 hunii nuutsiin tuluvlultiin undesHuman res planing 1 2010 hunii nuutsiin tuluvlultiin undes
Human res planing 1 2010 hunii nuutsiin tuluvlultiin undes
 
Лекц №2 Шийдвэр гаргалт
Лекц №2 Шийдвэр гаргалтЛекц №2 Шийдвэр гаргалт
Лекц №2 Шийдвэр гаргалт
 
тахианы аж ахуй
тахианы аж ахуйтахианы аж ахуй
тахианы аж ахуй
 
Bookjournalist (1)
Bookjournalist (1)Bookjournalist (1)
Bookjournalist (1)
 
үнэт цаасны техник шинжилгээний аргууд,онцлог
үнэт цаасны техник шинжилгээний аргууд,онцлогүнэт цаасны техник шинжилгээний аргууд,онцлог
үнэт цаасны техник шинжилгээний аргууд,онцлог
 
нийгмийн социал бүтэц
нийгмийн социал бүтэцнийгмийн социал бүтэц
нийгмийн социал бүтэц
 
Зах зээлийн идэвхижилийн шинжилгээ
Зах зээлийн идэвхижилийн шинжилгээЗах зээлийн идэвхижилийн шинжилгээ
Зах зээлийн идэвхижилийн шинжилгээ
 

Ähnlich wie Java Memory Model - memory in the eyes of a multithreading application

Jay Yagnik at AI Frontiers : A History Lesson on AI
Jay Yagnik at AI Frontiers : A History Lesson on AIJay Yagnik at AI Frontiers : A History Lesson on AI
Jay Yagnik at AI Frontiers : A History Lesson on AIAI Frontiers
 
Deep Learning Made Easy with Deep Features
Deep Learning Made Easy with Deep FeaturesDeep Learning Made Easy with Deep Features
Deep Learning Made Easy with Deep FeaturesTuri, Inc.
 
Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...
Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...
Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...Databricks
 
Pitfalls of machine learning in production
Pitfalls of machine learning in productionPitfalls of machine learning in production
Pitfalls of machine learning in productionAntoine Sauray
 
Deep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedDeep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedSuyash Joshi
 
Constrained Optimization with Genetic Algorithms and Project Bonsai
Constrained Optimization with Genetic Algorithms and Project BonsaiConstrained Optimization with Genetic Algorithms and Project Bonsai
Constrained Optimization with Genetic Algorithms and Project BonsaiIvo Andreev
 
2013.09.10 Giraph at London Hadoop Users Group
2013.09.10 Giraph at London Hadoop Users Group2013.09.10 Giraph at London Hadoop Users Group
2013.09.10 Giraph at London Hadoop Users GroupNitay Joffe
 
StackNet Meta-Modelling framework
StackNet Meta-Modelling frameworkStackNet Meta-Modelling framework
StackNet Meta-Modelling frameworkSri Ambati
 
Deep Learning for Robotics
Deep Learning for RoboticsDeep Learning for Robotics
Deep Learning for RoboticsIntel Nervana
 
Adsa lab manual
Adsa lab manualAdsa lab manual
Adsa lab manualRaja Ch
 
2013 06-03 berlin buzzwords
2013 06-03 berlin buzzwords2013 06-03 berlin buzzwords
2013 06-03 berlin buzzwordsNitay Joffe
 
Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15
Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15
Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15MLconf
 
10 more lessons learned from building Machine Learning systems - MLConf
10 more lessons learned from building Machine Learning systems - MLConf10 more lessons learned from building Machine Learning systems - MLConf
10 more lessons learned from building Machine Learning systems - MLConfXavier Amatriain
 
10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systemsXavier Amatriain
 
DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018
DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018
DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018Apache MXNet
 
Deep learning with Keras
Deep learning with KerasDeep learning with Keras
Deep learning with KerasQuantUniversity
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYAnaya Medias Swiss
 
Machine learning for IoT - unpacking the blackbox
Machine learning for IoT - unpacking the blackboxMachine learning for IoT - unpacking the blackbox
Machine learning for IoT - unpacking the blackboxIvo Andreev
 

Ähnlich wie Java Memory Model - memory in the eyes of a multithreading application (20)

Jay Yagnik at AI Frontiers : A History Lesson on AI
Jay Yagnik at AI Frontiers : A History Lesson on AIJay Yagnik at AI Frontiers : A History Lesson on AI
Jay Yagnik at AI Frontiers : A History Lesson on AI
 
Deep Learning Made Easy with Deep Features
Deep Learning Made Easy with Deep FeaturesDeep Learning Made Easy with Deep Features
Deep Learning Made Easy with Deep Features
 
Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...
Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...
Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest...
 
Pitfalls of machine learning in production
Pitfalls of machine learning in productionPitfalls of machine learning in production
Pitfalls of machine learning in production
 
Deep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedDeep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting Started
 
Constrained Optimization with Genetic Algorithms and Project Bonsai
Constrained Optimization with Genetic Algorithms and Project BonsaiConstrained Optimization with Genetic Algorithms and Project Bonsai
Constrained Optimization with Genetic Algorithms and Project Bonsai
 
2013.09.10 Giraph at London Hadoop Users Group
2013.09.10 Giraph at London Hadoop Users Group2013.09.10 Giraph at London Hadoop Users Group
2013.09.10 Giraph at London Hadoop Users Group
 
StackNet Meta-Modelling framework
StackNet Meta-Modelling frameworkStackNet Meta-Modelling framework
StackNet Meta-Modelling framework
 
Deep Learning for Robotics
Deep Learning for RoboticsDeep Learning for Robotics
Deep Learning for Robotics
 
Adsa lab manual
Adsa lab manualAdsa lab manual
Adsa lab manual
 
2013 06-03 berlin buzzwords
2013 06-03 berlin buzzwords2013 06-03 berlin buzzwords
2013 06-03 berlin buzzwords
 
Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15
Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15
Xavier Amatriain, VP of Engineering, Quora at MLconf SF - 11/13/15
 
10 more lessons learned from building Machine Learning systems - MLConf
10 more lessons learned from building Machine Learning systems - MLConf10 more lessons learned from building Machine Learning systems - MLConf
10 more lessons learned from building Machine Learning systems - MLConf
 
10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems
 
DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018
DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018
DeepLearning001&ApacheMXNetWithSparkForInference-ACNA2018
 
Deep learning with Keras
Deep learning with KerasDeep learning with Keras
Deep learning with Keras
 
JavaFX 101
JavaFX 101JavaFX 101
JavaFX 101
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONY
 
Scolari's ICCD17 Talk
Scolari's ICCD17 TalkScolari's ICCD17 Talk
Scolari's ICCD17 Talk
 
Machine learning for IoT - unpacking the blackbox
Machine learning for IoT - unpacking the blackboxMachine learning for IoT - unpacking the blackbox
Machine learning for IoT - unpacking the blackbox
 

Kürzlich hochgeladen

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 

Kürzlich hochgeladen (20)

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 

Java Memory Model - memory in the eyes of a multithreading application