首页 > 编程语言 > 详细

Java多线程

时间:2021-09-24 02:23:21      阅读:23      评论:0      收藏:0      [点我收藏+]

Thread类常用方法

  1. start():启动当前线程;调用当前线程的run()方法
  2. run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作
  3. Thread.currentThread():获取当前线程
  4. setName():设置线程名称
  5. yield():放弃占用CPU将CPU的使用权让给别的线程
  6. join():在线程A中调用B的join(),此时线程A进入阻塞状态,必须等待B执行完毕,A才能够继续执行
  7. sleep():休眠

线程的生命周期

新建,,就绪,运行,阻塞,死亡
技术分享图片

线程同步

  1. synchronized同步代码块,锁对象必须唯一。object是锁对象,相当于几个人需要进入一个小仓库拿货物,但是一次只能进去一个,object相当于钥匙,每次一个人拿这把钥匙进去,出来再把钥匙给另外一个人。
synchronized (Object) {
	for (;;) {
		if (ticket > 0) {
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			System.out.println(Thread.currentThread().getName() + ": " + ticket);
			ticket--;
		}	
	}
}
  1. synchronized同步方法

懒汉式线程安全效率高的写法

class Bank {
	
	private Bank() {}
	
	private static Bank instance = null;
	
	public static Bank getInstance() {
		
		if (instance == null) {
			
			synchronized (Bank.class) {
				if (instance == null) {
					instance = new Bank();
				}
			}
		}
		
		return instance;
	}
}

线程池

		// 1.指定线程数量的连接池
		ExecutorService service = Executors.newFixedThreadPool(10);
		ThreadPoolExecutor service1 = (ThreadPoolExecutor) service;
		// 设置线程池属性
		service1.setCorePoolSize(0);
		
		// 2.执行线程池操作,需要提供实现Runnable接口或Callable接口实现类的对象
		service.execute(new NumberThread());
		
		// 3.关闭连接池
		service.shutdown();

Java多线程

原文:https://www.cnblogs.com/wujie-code/p/15252772.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!