線程(在進程中獨立運行的子任務)
單線程 特色:排隊執行(必須上一個任務執行完畢才能執行下一個任務),也就是同步。
多線程 特色:異步,CPU在多個任務之間來回切換。
(多線程是異步的,線程被調用的時機是隨機的。)安全
實例變量(線程安全)
多線程操做的數據是否共享多線程
非共享實例(多個線程非訪問不一樣一個實例變量)(代碼以下)異步
public class TestXC
{
public static void main(String[] args) {
MyThread a = new MyThread("售票口一");
MyThread b = new MyThread("售票口二");
MyThread c = new MyThread("售票口三");
a.start();
b.start();
c.start();
}
}
class MyThread extends Thread
{
private int count = 5;
public MyThread(String name) {
super();
// 設置線程名稱
this.setName(name);
}
public void run() {
super.run();
while (count > 0) {
count--;
System.out.println("由" + this.currentThread().getName() + "賣出一張票,票數還剩餘" + count);
}
}
}this
共享實例以下線程
public class TestXC
{
public static void main(String[] args) {
MyThread a = new MyThread();
Thread t1 = new Thread(a, "售票口一");
Thread t2 = new Thread(a, "售票口二");
Thread t3 = new Thread(a, "售票口三");
Thread t4 = new Thread(a, "售票口四");
Thread t5 = new Thread(a, "售票口五");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
class MyThread extends Thread
{
private int count = 5;進程
public void run() {
super.run();
count--;
System.out.println("由" + this.currentThread().getName() + "賣出一張票,票數還剩餘" + count);
}
}get
保證多個線程操做的是同一個count同步