Java多线程的同步依靠的是对象锁机制这个问题需要我们不断的学习相关的问题下面我们就来详细的学习下如何才能更好的进行具体内容的使用synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问
下面以一个简单的实例来进行对比分析实例要完成的工作非常简单就是创建个线程每个线程都打印从到这个数字我们希望线程之间不会出现交叉乱序打印而是顺序地打印
先来看第一段代码这里我们在run()方法中加入了synchronized关键字希望能对run方法进行互斥访问但结果并不如我们希望那样这是因为这里synchronized锁住的是this对象即当前运行线程对象本身Java多线程代码中创建了个线程而每个线程都持有this对象的对象锁这不能实现线程的同步
Java多线程代码如下
package comvista;
class MyThread implements javalangRunnable
{
private int threadId;
public MyThread(int id)
{
thisthreadId = id;
}
@Override
public synchronized void run()
{
for (int i = ; i < ; ++i)
{
Systemoutprintln(Thread ID: + thisthreadId + : + i);
}
}
}
public class ThreadDemo
{
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException
{
for (int i = ; i < ; ++i)
{
new Thread(new MyThread(i))start();
Threadsleep();
}
}
}
以上就是对Java多线程的详细代码介绍