Question: So I am looking at an [IBM Article](https://developer.ibm.com/tutorials/j-threads/) and I couldn't get my head around with the below statements.

```
public class Counter {
  private int counter = 0;

  public int  get()      { return counter; }
  public void set(int n) { counter = n; }
  public void increment() {
    set(get() + 1);
  }
}

```

What happens if two threads try to execute increment() at the same time? The counter might be incremented by 1 or by 2.

My doubts is that if a Thread A executes the above statement for the first time, then get() will return 0 and set increment will set it to 1. Only after the thread A finish executing or goes to sleep, Thread B can start executing ? How come both Thread A and Thread B can execute a piece of code **at the same time** ?
How can counter be incremented by 2 ?

Answer: 
I just opened this file in a text editor. This is not a tab delimited file, or anything delimited file. This is a fixed width fields files from line 9 to 48. You should use `pd.read_fwf` instead skiping some lines.

This would work:

```
import pandas as pd
url = 'https://ticdata.treasury.gov/Publish/mfh.txt'
Data = pd.read_fwf(url, widths=(31,8,8,8,8,8,8,8,8,8,8,8,8,8), skiprows=8, skipfooter=16, header=(0,1))
Data

```
The file you're linking is not in the CSV/TSV format. You need to transform the data to look something like [this](https://en.wikipedia.org/wiki/Tab-separated_values) before loading it in this way.