Java:多线程基础

Posted 子烁爱学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:多线程基础相关的知识,希望对你有一定的参考价值。

Java:多线程基础(1)

实现多线程的两种方式

1.继承Thread类

1 public class myThread extends Thread {
2     /**
3      * 继承Thread类,重写RUN方法。
4      */
5     @Override
6     public void run() {
7         super.run();
8     }
9 }

【说明】

  1. 由于Java继承机制,此处不再支持多继承。

2.实现Runnable接口

 1 class myRunable implements Runnable
 2 {
 3     /**
 4      * 实现Runnable接口,实现RUN方法
 5      */
 6     @Override
 7     public void run() {
 8         
 9     }
10 }

3.启用线程

1     public static void main(String[] args) {
2         myThread aThread = new myThread();
3         aThread.start();
4 
5         myRunnable aRunnable = new myRunnable();
6         Thread bThread = new Thread(aRunnable);
7         bThread.start();
8     }

共享数据及线程安全

多个线程访问同一个变量的错误实例

 

 

使用synchronized关键字加锁

 

currentThread()方法

 

isAlive()方法

 

sleep()方法

 

停止线程

 

暂停线程

 

yield方法

 

线程的优先级

在Java中,线程的优先级分为1~10:Java中使用三个预定义的优先级值

1     public static final int MIN_PRIORITY = 1;
2     public static final int NORM_PRIORITY = 5;
3     public static final int MAX_PRIORITY = 10;

说明:

  1. 优先级具有继承性,如果A线程qi dong B xian cheng,ze B xian cheng you xian ji yu A xian cheng shi yi yang de .
  2. youxianjijuyouguizexing
  3. youxianjijuyousuijixing

守护线程

守护线程,是一种特殊的线程,他的特性有陪伴的含义,当进程中不存在非守护线程了,则守护线程自动销毁

守护线程的作用是为其他线程的运行提供便利服务,最典型的应用就是GC(垃圾回收器),它是一个很称职的守护者。

守护进程:

 1 public class DaemonThread extends Thread {
 2     private int i=10;
 3     @Override
 4     public void run() {
 5         while (true)
 6         {
 7             System.out.println(i--);
 8             try {
 9                 Thread.sleep(1000);
10             } catch (InterruptedException e) {
11                 e.printStackTrace();
12             }
13         }
14     }
15 }

测试方法:

1     @Test
2     public void testDaemon() throws Exception {
3         DaemonThread daemonThread = new DaemonThread();
4         daemonThread.setDaemon(true);
5         daemonThread.start();
6         Thread.sleep(5000);
7         System.out.println("我离开守护进程也就不再打印了!");
8     }

 

以上是关于Java:多线程基础的主要内容,如果未能解决你的问题,请参考以下文章

java基础入门-多线程同步浅析-以银行转账为样例

java多线程基础

Java基础之多线程

Java多线程基础

多线程编程学习一(Java多线程的基础)

Java 多线程基础多线程的实现方式