标签:java多线程死锁 后台线程 线程优先级 同步死锁 java线程应用
实例: package thread.deadlock; /** * 创建DeadlockDemo类:用于测试死锁 * @author 学霸联盟 - 赵灿 */ public class DeadlockDemo { public static void main(String[] args) { //创建一个Shop对象 Shop shop = new Shop(); //创建两个线程对象 ThreadBuy tBuy = new ThreadBuy(shop); ThreadSell tSell = new ThreadSell(shop); tBuy.start(); tSell.start(); } } /** * 创建Cargo(货物)类:仅仅为了创建对象,获取对象锁 * @author 学霸联盟 - 赵灿 */ class Cargo{ } /** * 创建Money(货物)类:仅仅为了创建对象,获取对象锁 * @author 学霸联盟 - 赵灿 */ class Money{ } /** * 创建Shop(商店)类 * @author 学霸联盟 - 赵灿 */ class Shop { //创建Cargo对象 private Cargo cargo = new Cargo(); //创建Money对象 private Money money = new Money(); //buyer方法完成买家想要的功能 public void buyer() { //买家手里拿着钱,对应到代码上就是获得money对象的锁 synchronized (money) { System.out.println("买家拿着钱说:先交货"); try { //模拟等待卖家交货的时间 Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } //买家拿着钱的同时想要把货也拿到手里,再交出钱 synchronized (cargo) { System.out.println("买家:成交"); } } } //seller方法完成卖家想要的功能 public void seller() { //卖家手里拿着货,对应到代码上就是获得cargo对象的锁 synchronized (cargo) { System.out.println("卖家拿着货说:先交钱"); try { //模拟等待买家交钱的时间 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //卖家拿着货的同时想要把钱也拿到手里,再交出货 synchronized (money) { System.out.println("买家:成交"); } } } } /** * 创建ThreadBuy类 * @author 学霸联盟 - 赵灿 */ class ThreadBuy extends Thread{ private Shop shop; public ThreadBuy(Shop shop){ this.shop = shop; } @Override public void run() { //购买的线程,执行购买的方法 shop.buyer(); } } /** * 创建ThreadSell类 * @author 学霸联盟 - 赵灿 */ class ThreadSell extends Thread{ private Shop shop; public ThreadSell(Shop shop){ this.shop = shop; } @Override public void run() { //卖出的线程,执行卖出的方法 shop.seller(); } } 运行结果: 卖家拿着货说:先交钱 买家拿着钱说:先交货死锁导致交易永远无法达成
实例: package thread.priority; /** * 创建父线程 * @author 学霸联盟 - 赵灿 */ public class FatherThread extends Thread { // 声明一个无参数的构造方法 public FatherThread() { // 设置当前类对象的优先级为8 this.setPriority(8); } } package thread.priority; /** * 创建子线程 * @author 学霸联盟 - 赵灿 */ public class SonThread extends FatherThread { public static void main(String[] args) { // 创建SonThread对象,并使用创建的对象调用start方法启动线程 new SonThread().start(); } @Override public void run() { /* * 使用关键字this调用getPriority方法,获取当前线程的优先级 * 并通过输出语句System.out.println将获取到的优先级输出 */ System.out.println("子线程的优先级:" + this.getPriority()); } } 运行结果: 子线程的优先级:8
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:java多线程死锁 后台线程 线程优先级 同步死锁 java线程应用
原文地址:http://blog.csdn.net/ixueba/article/details/47611543