我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

java没有作用的代码 java没有作用的代码是什么

java synchronized不起作用啊 代码如下

你这样写肯定同步不了。一个对象含有一个隐藏的锁和隐藏的条件,你这样

创新互联建站专注于荔城企业网站建设,响应式网站设计,成都商城网站开发。荔城网站建设公司,为荔城等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

synchronized(newObject())

{

}这种写法

每次都会生成一个新对象,就等于每个线程都能获得这个新对象的锁,所以根本无法做到同步

学java中,一个卖票程序,同步代码块 synchronized(){},没起作用,依然输出0和负号票,怎么回事?

你的这句话放在run方法里面了:Object b=new Object();

是局部变量,一直在变化,造成锁一直在变化,所以出现了问题。

Java中 synchronized没有用,代码如下。运行结果如图(不该出现非正数)。谢谢高手解答!!

package ergouge.thread.demo;

/*

nbsp;多线程模拟售票:三个窗口售票20张

nbsp;*/

class Ticket implements Runnable {

nbsp;nbsp;nbsp;nbsp;private int num = 20;

nbsp;nbsp;nbsp;nbsp;final String s = "hell";

nbsp;nbsp;nbsp;nbsp;public void run() { // 覆盖run方法

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;sell();

nbsp;nbsp;nbsp;nbsp;}

nbsp;nbsp;nbsp;nbsp;// 解决线程安全

nbsp;nbsp;nbsp;nbsp;public void sell() {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// synchronized (new Object()) { // 同步代码块,防止多个线程进入

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// 同步代码块,防止多个线程进入

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;while (num gt; 0) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// 放到这里也不行 synchronized(new Object()) { //

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// 同步代码块,防止多个线程进入

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;synchronized (s) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;try {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread.sleep(500);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} catch (InterruptedException e) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} // 让线程sleep 0.5秒,测试线程安全问题

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;System.out.println(Thread.currentThread().getName() + "...sell ticket " + num--);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}

nbsp;nbsp;nbsp;nbsp;}

}

public class TicketSale {

nbsp;nbsp;nbsp;nbsp;public static void main(String[] args) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Ticket x = new Ticket();

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread t1 = new Thread(x);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread t2 = new Thread(x);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread t3 = new Thread(x);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;t1.start();

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;t2.start();

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;t3.start();

nbsp;nbsp;nbsp;nbsp;}

}

楼主你仔细看下我该了以后的代码,先找到区别

有两点楼主要注意:

一、synchronized(newObject())相当于没有同步,同步的是同一块内存地址,你这样的话,每次都不是同一块内存地址,因此相当于没有同步

二、同步的范围:同步的范围不是越大越好,仔细想想看吧楼主,你的同步范围太大了

Java代码更改 Linux 文件访问权限有时不起作用?

你说的更改权限为640和你后面的代码并不一致,理论上应该有直接以数字为参数的方法吧?

还有注意检查运行java代码的当前用户是哪个?因为权限涉及到当前用户。

我写了个java代码,编译没有问题,但是执行的时候就出了一堆乱七八糟的代码,这是怎么回事?

原因是你编译使用的javac,把代码编译成版本61的class,而你的运行环境java,是一个老版本,能执行的上限是52版本。

解决方法有两个:

1,安装和JDK相同版本的Java运行时(JRE),并正确设置PATH变量。验证方法是:

在黑窗口里分别输入java -version和javac -version,两个版本要一致,或者java的版本更高。

相关命令截图如下:

2,编译的时候指定运行时的版本:使用--release参数指定版本。

例如,你通过 java -version查看到版本=8,那么就按如图的命令编译


标题名称:java没有作用的代码 java没有作用的代码是什么
网站地址:http://mswzjz.cn/article/hpjpid.html

其他资讯