随堂笔记160323线程

来源:互联网 发布:联想数据恢复中心电话 编辑:程序博客网 时间:2024/05/20 08:23

一、多线程:

1.继承Thread:需要在线程中运行的代码写入run方法里.

class MyThread extends Thread{    public void run(){        System.out.println("这是一个线程");    }}public class TestDome{    public static void main(String[] args){        Thread t = new MyThread();        t.start();  //开始运行run里的内容    }}

2.实现Runnable接口:

class MyThread implements Runnable{    public void run(){        System.out.println("This is Thread");    }}public class TestDome{    public static void main(String[] args){        MyThread m = new MyThread();        Thread f = new Thread(m);        Thread f1 = new Thread(m);        f.start();        f1.start();    }}

1.通过1、2我们可以看出:

  1. 通过实现Runnable的线程必须通过传给Thread来运行
  2. 实现Runnable的线程可以实现“数据共享”,因为无论有多少个线程,线程的对象总是m,而Thread不行
  3. 所以在开发中一般实现Runnable

3.多线程示例:

class Windows implements Runnable {    private int ticketNum = 10;    public void run() {        while (true) {            if (ticketNum > 0) {                System.out.println("售卖票" + ticketNum--);            }else{                break;            }        }    }}public class TestDome{    public static void main(String[] args){        Windows w = new Windows();        Thread t1 = new Thread(w);        Thread t2 = new Thread(w);        t1.start();        t2.start();    }}

4.线程安全:

1.从3的代码可以看出当程序运行了足够多次数,会发生错误,例如出现售出两张票10,解决这个方法的问题就是说使用同步。

2.synchronized(同步):

1.使用了该标识符的方法或代码块不会被打断,即该代码被锁上了,除拥有该锁的线程外,其他想访问该代码的线程都会被阻塞,直到该锁被释放

class Windows implements Runnable {    private int ticketNum = 10;    public void run() {        while (true) {            synchronized(this){                if (ticketNum > 0) {                    System.out.println("售卖票" + ticketNum--);                }else{                    break;                }            }           }    }}public class TestDome{    public static void main(String[] args){        Windows w = new Windows();        Thread t1 = new Thread(w);        Thread t2 = new Thread(w);        t1.start();        t2.start();    }}

2.造成线程安全问题的两大原因:1.数据共享 2.多步操作

0 0
原创粉丝点击