单线程:java+类名,会启动主线,并且执行main()方法 多线程:Thread实例的start()方法,会启动线程,并且调用Thread实例的run()方法。
因为Thread的run(): public void run() { if (target != null) { target.run(); } } 所以实现多线程有两种形式: 重写Thread的run()方法。 将实现了runable借口的类的实例,传递给Thread实例的target。
线程暂时停止:Thread的sleep()方法。如果采用重写Thread的run()这种方式,可以直接this.sleep() 线程的共享互斥:因为多个线程可能就操作同一个实例,所以有可能出现问题 syncrhronized实例方法:线程对this进行锁定 syncrhronized阻挡 syncrhronized类方法:线程对class类进行锁定
线程的协调:obj.wait(),obj.notify(),obj,notifyall() 实际操作的都是obj的wait set,waitset 是一个在执行该实例wait()方法时,停止操作的线程的集合 并且必须获得obj的锁定才能执行这三个方法,并且执行了wait()方法之后会释放锁定。