「编程」 Java多线程编程

「编程」 Java多线程编程


<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关键字,则不使用副本,直接使用原始空间

「编程」 Java多线程编程


分享到:


相關文章: