<code>java.lang.Thread
class xxx extends Thread {
覆写run方法
}/<code>
使用xxx.start()启动线程
<code>java.lang.Runnable jdk1.0
class xxx implements {
覆写run方法
}/<code>
<code>new Thread(xxx).start()
class MyThread implements Runnable {
private String title;
public MyThread(String title) {
// TODO Auto-generated constructor stub
this.title = title;
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int x = 0; x < 10; x++) {
System.out.println(this.title + "运行x=" + x);
}
}
}
for (int x = 0; x < 3; x++) {
String title = "线程对象-" + x;
new Thread(() -> {
for (int y = 0; y < 10; y++) {
System.out.println(title + "运行" + y);
}
}).start();
}
/<code>
java.util.concurrent.Callable jdk1.5 JUC多线程框架
<code>class MyThread implements Callable<string> {
public String call() throws Exception {
System.out.println("Hello")
return "complete";
}
}
FutureTask<string> task = new FutureTask<> (new MyThread());
new Thread(task).start();
task.get();
/<string>/<string>/<code>
线程操作
命名操作:
<code>Thread.currentThread().setName()
Thread(Runnable target, String name);
Thread.currentThread().getName()/<code>
获取当前线程
<code>run() {
Thread.currentThread()
}/<code>
线程休眠
<code>Thread.sleep(ms [ns]) throws InterruptedException
必须处理/<code>
线程中断
<code>Thread th
th.isInterrupted() /<code>
线程一旦被中断,该方法返回true,而一旦sleep等方法抛出异常,它将清除中断状态,此时方法将返回false。
<code>Thread th
th.interrupt() /<code>
(1)将线程的中断状态设置为true
(2)让被阻塞的线程抛出InterruptedException异常(同时中断状态为false)。
线程强制运行
<code>Thread th;
th = Thread.currentThread();
th.join()
/<code>
线程礼让
Thread.yield() 线程礼让操作
只会礼让一次
线程优先级
<code>Thread th
th.setPriority()
th.getPriority()
MAX_PRIORITY 10
MIN_PRIORITY 5
NORMAL_PRIORITY 1/<code>
线程同步
1.同步代码块
synchronized(同步对象){
同步代码操作
}
同步对象this,
2.利用同步方法 系统多数采用这个方法
public synchronized void sale()
等待与唤醒
java.lang.Object
等待机制:
-死等:public final void wait() throws InterruptedException
-超时:public final void wait(long time) throws InterruptedException
唤醒第一个等待线程:
public final void notify ();
唤醒全部等待线程:
public final void notifyall();
优雅的停止线程:
stop() 停止 jdk1.2被废除,不建议用
destroy() 销毁 废除
suspend() 挂起 废除
resume() 恢复 废除
因为这些方法可能导致线程死锁,所以废弃
boolean flag = true;
while(flag) {} 优雅的停止
后台守护线程:
守护线程围绕用户线程的周围,如果程序运行完毕,那么守护线程也结束
最大的守护线程GC线程,如果程序线程执行完毕,GC也消失
setDaemon(boolean)
volatile关键字
变量处理:
-获取变量原有的内容副本
-利用副本为变量进行运算
-将计算后的变量,保存到原始空间
如果追加volatile关键字,则不使用副本,直接使用原始空间
閱讀更多 攻防基地 的文章