Skip to content

Instantly share code, notes, and snippets.

View vishalratna-microsoft's full-sized avatar

Vishal Ratna vishalratna-microsoft

  • Microsoft
  • Bangalore
View GitHub Profile
@vishalratna-microsoft
vishalratna-microsoft / SingularWebViewPool.java
Last active December 6, 2022 14:32
Pool with single instance of web view
// Has a single web view, and crashes if a request to obtain comes in and the
// cached instance is already allocated.
public static class SingularWebViewPool implements WebViewPool {
private WebView mCachedInstance;
private volatile int mBorrower;
private final int mSignature;
private final Context mAppCtx;
public SingularWebViewPool(Context appCtx) {
@vishalratna-microsoft
vishalratna-microsoft / DemoClass.java
Created September 9, 2022 16:59
Submission of work is easy if work is submitted alone.
package com.tutorials.vishal;
import com.tutorials.vishal.hierarchy.BaseWork;
import com.tutorials.vishal.hierarchy.RxWork;
import com.tutorials.vishal.hierarchy.Scheduler;
public class DemoClass {
void driver() {
BaseWork work = new BaseWork();
@vishalratna-microsoft
vishalratna-microsoft / DemoClass.java
Created September 9, 2022 17:23
How covariant list allows the blocked operations.
package com.tutorials.vishal;
import com.tutorials.vishal.hierarchy.BaseWork;
import com.tutorials.vishal.hierarchy.RxWork;
import com.tutorials.vishal.hierarchy.Scheduler;
import java.util.ArrayList;
import java.util.List;
public class DemoClass {
@vishalratna-microsoft
vishalratna-microsoft / PCExample.java
Created January 22, 2023 07:02
Demonstrate produce-consumer problem using volatile
public class PCExample {
private volatile boolean shouldProduce = true; // Make this non-volatile, it will not work.
private int value = -1; // As we write the value before a write to volatile, this does not need to be volatile. All values
// will be flushed to main m/m along with volatile. Case of "happens before" guarantee.
public void startProducer() {
Runnable producer = () -> {
for (int i = 0; i < 10; i++) {
while (!shouldProduce) { }