Java教程

Java多线程

本文主要是介绍Java多线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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():休眠

线程的生命周期

新建,,就绪,运行,阻塞,死亡
image

线程同步

  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多线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!