实现Runnable接口创建多线程
class Tick implements Runnable {
private int num = 100;
public void run() {
while (true) {
if(num>0) {
Thread tk = Thread.currentThread();//获得当前线程
String mString = tk.getName();//获得当前线程的名字
System.out.println(mString+" "+num--+" ");
}
}
}
多线程
public static void main(String[] args) {
// TODO Auto-generated method stub
Tick tick = new Tick();//创建实例对象
new Thread(tick,"m1").start();//创建线程对象并命名m1,开启线程
new Thread(tick,"m2").start();
new Thread(tick,"m3").start();
new Thread(tick,"m4").start();
}
后台线程
public static void main(String[] args) {
Tick tick = new Tick();//创建实例对象
Thread k = new Thread(tick,"后台线程");
k.setDaemon(true);//将线程k设置为后台线程
k.start();//开启线程
}
线程的优先级
public static void main(String[] args) {
// TODO Auto-generated method stub
Tick tick = new Tick();//创建实例对象
Thread k1 = new Thread(new Tick(),"优先级max");
Thread k2 = new Thread(new Tick(),"优先级nin");
Thread k3 = new Thread(new Tick(),"优先级norm");
Thread k4 = new Thread(new Tick(),"优先级2");
//优先级高到低,高的优先执行
k1.setPriority(Thread.Max_PRIORITY);//最高优先级 ——10
k2.setPriority(Thread.MIN_PRIORITY);//最低优先级 ——1
k3.setPriority(Thread.NORM_PRIORITY);//普通优先级 ——5
k4.setPriority(2);//优先级 ——2
k1.start();k2.start();k3.start();k4.start();
}
线程休眠
Thread.sleep(500); //当前线程休眠500毫秒
//只能控制当前线程休眠,休眠时间结束后,线程返回就绪状态,不立即执行
线程让步
while(条件):
Thread.yield();//线程运行到此,做出让步
线程插队
Tick tick = new Tick();//创建实例对象
tick.start();
while(条件):
t.join();
同步代码块
synchronized(lock){
操作共享资源代码块
}
synchronized 返回值类型 方法名 ([参数1,。。。。]){ }
多线程通信
void wait() 使当前线程放弃同步锁并进入等待在,直到其他线程进入此同步锁,并调用notify()方法,或notifyAll()方法唤醒该线程为止
void notify() 唤醒此同步锁等待的第一个调用wait()方法的线程
void notifyAll() 唤醒此同步锁调用wait()方法的所有线程