目录
多线程含义:
多线程在实际业务中的解决的问题
如何使用?
synchronized lock 线程定义方式(Thread Runnable Callable-FutureTask一起使用实现有返回值得异步线程) 线程的优先级:线程分为10个优先级 常用 0 5 10 默认为5.线程优先级越大表示有很大的概率先执行完毕。线程优先级越大,执行时间越短。线程优先级具有继承性。
- synchronized 实现原理:
- 如果多个线程访问一个方法中的 多个加锁方法。如果是锁同一个对象则需要等待排队执行。如下
public class SyncTest { public static void main(String[] args) { SyncTest1 s1 = new SyncTest1(); Thread t1 = new Thread(new Runnable() { @Override public void run() { try { s1.test(); } catch (InterruptedException e) { e.printStackTrace(); } } }); t1.setName("t1"); t1.start(); Thread t2 = new Thread(new Runnable() { @Override public void run() { s1.test1(); } }); t2.setName("t2"); t2.start(); } } class SyncTest1{ synchronized public void test() throws InterruptedException { System.out.println("start:线程名称:" + Thread.currentThread().getName()); Thread.sleep(5000); System.out.println("end"); } synchronized public void test1(){ System.out.println("test1-线程名称" + Thread.currentThread().getName()); } }
执行结构:
start:线程名称:t1 end test1-线程名称t2
-
线程安全问题:只发生在实例变量。对方法内的局部变量不存在线程安全问题。因为局部变量都是在线程内部维护。不存在多线程安全 问题。 - 待补充