博客
关于我
java基础学习总结——线程(二)
阅读量:357 次
发布时间:2019-03-04

本文共 5084 字,大约阅读时间需要 16 分钟。

?????????????

?????????????????????????setPriority()????????????????NORM_PRIORITY??5???????????t1??????????8??????t2???????????????????

package cn.galc.test;public class TestThread6 {    public static void main(String args[]) {        MyThread4 t4 = new MyThread4();        MyThread5 t5 = new MyThread5();        Thread t1 = new Thread(t4);        Thread t2 = new Thread(t5);        t1.setPriority(Thread.NORM_PRIORITY + 3);        t1.start();        t2.start();        System.out.println("t1????????" + t1.getPriority());    }}class MyThread4 implements Runnable {    public void run() {        for (int i = 0; i <= 1000; i++) {            System.out.println("T1?" + i);        }    }}class MyThread5 implements Runnable {    public void run() {        for (int i = 0; i <= 1000; i++) {            System.out.println("T2?" + i);        }    }}

????????????????????synchronized???????????????????????????????????????????Timer???synchronized??????????????????????????

package cn.galc.test;public class TestSync implements Runnable {    Timer timer = new Timer();    public static void main(String args[]) {        TestSync test = new TestSync();        Thread t1 = new Thread(test);        Thread t2 = new Thread(test);        t1.setName("t1");        t2.setName("t2");        t1.start();        t2.start();    }    public void run() {        timer.add(Thread.currentThread().getName());    }}class Timer {    private static int num = 0;    public void add(String name) {        synchronized (this) {            num++;            try {                Thread.sleep(1);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println(name + "????" + num + "???timer???");        }    }}

????????????????????????????????????????????????????????????????o1?o2??????????????????????

package cn.galc.test;public class TestDeadLock implements Runnable {    public int flag = 1;    static Object o1 = new Object(), o2 = new Object();    public void run() {        System.out.println(Thread.currentThread().getName() + "?flag=" + flag);        if (flag == 1) {            synchronized (o1) {                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }                synchronized (o2) {                    System.out.println("1");                }            }        }        if (flag == 0) {            synchronized (o2) {                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }                synchronized (o1) {                    System.out.println("0");                }            }        }    }    public static void main(String args[]) {        TestDeadLock td1 = new TestDeadLock();        TestDeadLock td2 = new TestDeadLock();        td1.flag = 1;        td2.flag = 0;        Thread t1 = new Thread(td1);        Thread t2 = new Thread(td2);        t1.setName("??td1");        t2.setName("??td2");        t1.start();        t2.start();    }}

??????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????synchronized????wait/notify????????????????

package cn.galc.test;public class ProducerConsumer {    public static void main(String args[]) {            SyncStack stack = new SyncStack();            Runnable p = new Producer(stack);            Runnable c = new Consumer(stack);            Thread p1 = new Thread(p);            Thread c1 = new Thread(c);            p1.start();            c1.start();    }}class SyncStack {    private int index = 0;    private char[] data = new char[6];    public synchronized void push(char c) {        if (index == data.length) {            try {                this.wait();            } catch (InterruptedException e) {            }        }        this.notify();        data[index] = c;        index++;    }    public synchronized char pop() {        if (index == 0) {            try {                this.wait();            } catch (InterruptedException e) {            }        }        this.notify();        index--;        return data[index];    }}class Producer implements Runnable {    SyncStack stack;    public Producer(SyncStack s) {        stack = s;    }    public void run() {        for (int i = 0; i < 20; i++) {            char c = (char) (Math.random() * 26 + 'A');            stack.push(c);            System.out.println("produced?" + c);            try {                Thread.sleep((int) (Math.random() * 1000));            } catch (InterruptedException e) {            }        }    }}class Consumer implements Runnable {    SyncStack stack;    public Consumer(SyncStack s) {        stack = s;    }    public void run() {        for (int i = 0; i < 20; i++) {            char c = stack.pop();            System.out.println("???" + c);            try {                Thread.sleep((int) (Math.random() * 1000));            } catch (InterruptedException e) {            }        }    }}

转载地址:http://fckr.baihongyu.com/

你可能感兴趣的文章
npm install 卡着不动的解决方法
查看>>
npm install 报错 EEXIST File exists 的解决方法
查看>>
npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
查看>>
npm install 报错 Failed to connect to github.com port 443 的解决方法
查看>>
npm install 报错 fatal: unable to connect to github.com 的解决方法
查看>>
npm install 报错 no such file or directory 的解决方法
查看>>
npm install 权限问题
查看>>
npm install报错,证书验证失败unable to get local issuer certificate
查看>>
npm install无法生成node_modules的解决方法
查看>>
npm install的--save和--save-dev使用说明
查看>>
npm node pm2相关问题
查看>>
npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
查看>>
npm run build报Cannot find module错误的解决方法
查看>>
npm run build部署到云服务器中的Nginx(图文配置)
查看>>
npm run dev 和npm dev、npm run start和npm start、npm run serve和npm serve等的区别
查看>>
npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
查看>>
npm scripts 使用指南
查看>>
npm should be run outside of the node repl, in your normal shell
查看>>
npm start运行了什么
查看>>
npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
查看>>