博客
关于我
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/

你可能感兴趣的文章
Python 循环异或对文件进行加解密
查看>>
Python开发环境搭建(附VMware安装包及虚拟机环境)
查看>>
python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
查看>>
Python 快速下载依赖
查看>>
python实现非参数统计的Cochran检验 (附完整源码)
查看>>
python 怎么验证是否安装成功 scrapy
查看>>
Python 手写数字识别-1
查看>>
Python实现接口自动化测试库(JSON与Requests)详解
查看>>
Python 手写数字识别-3-sklearn中的几种算法
查看>>
python实现SSIM和MSSSIM计算 (附完整源码)
查看>>
Python 打开文件注意事项
查看>>
python 批量修改文件名_python windows下批量修改文件名
查看>>
Python 抓取网页乱码问题 以及EXCEL乱码
查看>>
python 抓取网页内容
查看>>
python 按照当前日期创建文件
查看>>
Python 接口并发测试详解
查看>>
Python 接口自动化 —— requests框架
查看>>
python 接口自动化数据结构(如列表、字典、元组)
查看>>
Python 接口自动化测试中的深拷贝与浅拷贝~
查看>>
Python 接口自动化测试中的高阶函数
查看>>